Changeset a35b458 in mainline for uspace/lib/ext4/src/inode.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/src/inode.c
r3061bc1 ra35b458 53 53 uint32_t bits = 8; 54 54 uint32_t size = block_size; 55 55 56 56 do { 57 57 bits++; 58 58 size = size >> 1; 59 59 } while (size > 256); 60 60 61 61 return bits; 62 62 } … … 76 76 ((uint32_t) uint16_t_le2host(inode->mode)); 77 77 } 78 78 79 79 return uint16_t_le2host(inode->mode); 80 80 } … … 90 90 { 91 91 inode->mode = host2uint16_t_le((mode << 16) >> 16); 92 92 93 93 if (ext4_superblock_get_creator_os(sb) == EXT4_SUPERBLOCK_OS_HURD) 94 94 inode->osd2.hurd2.mode_high = host2uint16_t_le(mode >> 16); … … 129 129 { 130 130 uint32_t major_rev = ext4_superblock_get_rev_level(sb); 131 131 132 132 if ((major_rev > 0) && 133 133 (ext4_inode_is_type(sb, inode, EXT4_INODE_MODE_FILE))) 134 134 return ((uint64_t)uint32_t_le2host(inode->size_hi)) << 32 | 135 135 ((uint64_t)uint32_t_le2host(inode->size_lo)); 136 136 137 137 return uint32_t_le2host(inode->size_lo); 138 138 } … … 304 304 uint16_t_le2host(inode->osd2.linux2.blocks_high)) << 32 | 305 305 uint32_t_le2host(inode->blocks_count_lo); 306 306 307 307 if (ext4_inode_has_flag(inode, EXT4_INODE_FLAG_HUGE_FILE)) { 308 308 uint32_t block_size = ext4_superblock_get_block_size(sb); … … 330 330 uint64_t max = 0; 331 331 max = ~max >> 32; 332 332 333 333 if (count <= max) { 334 334 inode->blocks_count_lo = host2uint32_t_le(count); 335 335 inode->osd2.linux2.blocks_high = 0; 336 336 ext4_inode_clear_flag(inode, EXT4_INODE_FLAG_HUGE_FILE); 337 337 338 338 return EOK; 339 339 } 340 340 341 341 /* Check if there can be used huge files (many blocks) */ 342 342 if (!ext4_superblock_has_feature_read_only(sb, 343 343 EXT4_FEATURE_RO_COMPAT_HUGE_FILE)) 344 344 return EINVAL; 345 345 346 346 /* 48-bit maximum */ 347 347 max = 0; 348 348 max = ~max >> 16; 349 349 350 350 if (count <= max) { 351 351 inode->blocks_count_lo = host2uint32_t_le(count); … … 360 360 inode->osd2.linux2.blocks_high = host2uint16_t_le(count >> 32); 361 361 } 362 362 363 363 return EOK; 364 364 } … … 424 424 uint16_t_le2host(inode->osd2.linux2.file_acl_high)) << 16 | 425 425 (uint32_t_le2host(inode->file_acl_lo)); 426 426 427 427 return uint32_t_le2host(inode->file_acl_lo); 428 428 } … … 439 439 { 440 440 inode->file_acl_lo = host2uint32_t_le((file_acl << 32) >> 32); 441 441 442 442 if (ext4_superblock_get_creator_os(sb) == EXT4_SUPERBLOCK_OS_LINUX) 443 443 inode->osd2.linux2.file_acl_high = host2uint16_t_le(file_acl >> 32); … … 455 455 { 456 456 assert(idx < EXT4_INODE_DIRECT_BLOCK_COUNT); 457 457 458 458 return uint32_t_le2host(inode->blocks[idx]); 459 459 } … … 469 469 { 470 470 assert(idx < EXT4_INODE_DIRECT_BLOCK_COUNT); 471 471 472 472 inode->blocks[idx] = host2uint32_t_le(fblock); 473 473 } … … 540 540 if (ext4_inode_get_flags(inode) & flag) 541 541 return true; 542 542 543 543 return false; 544 544 } … … 583 583 (ext4_inode_has_flag(inode, EXT4_INODE_FLAG_IMMUTABLE))) 584 584 return false; 585 585 586 586 if ((ext4_inode_is_type(sb, inode, EXT4_INODE_MODE_FILE)) || 587 587 (ext4_inode_is_type(sb, inode, EXT4_INODE_MODE_DIRECTORY))) 588 588 return true; 589 589 590 590 return false; 591 591 }
Note:
See TracChangeset
for help on using the changeset viewer.