Changeset ca3d77a in mainline for uspace/lib/ext4/libext4_filesystem.c
- Timestamp:
- 2012-01-28T10:51:56Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7c506ced
- Parents:
- fe56c08a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/libext4_filesystem.c
rfe56c08a rca3d77a 284 284 285 285 // TODO extents, dir_index etc... 286 286 287 rc = ext4_filesystem_get_inode_ref(fs, index, inode_ref); 287 288 if (rc != EOK) { … … 325 326 int rc; 326 327 327 // release all indirect blocks328 // release all indirect (no data) blocks 328 329 329 330 // 1) Single indirect … … 332 333 rc = ext4_balloc_free_block(fs, inode_ref, fblock); 333 334 if (rc != EOK) { 334 // TODO error335 return rc; 335 336 } 336 337 … … 443 444 ext4_inode_ref_t *inode_ref, aoff64_t new_size) 444 445 { 446 int rc; 447 445 448 if (! ext4_inode_can_truncate(fs->superblock, inode_ref->inode)) { 446 449 // Unable to truncate … … 454 457 } 455 458 459 // It's not suppported to make the larger file 456 460 if (old_size < new_size) { 457 // Currently not supported to expand the file458 // TODO459 EXT4FS_DBG("trying to expand the file");460 461 return EINVAL; 461 462 } … … 463 464 aoff64_t size_diff = old_size - new_size; 464 465 uint32_t block_size = ext4_superblock_get_block_size(fs->superblock); 465 uint32_t blocks_count = size_diff / block_size;466 uint32_t diff_blocks_count = size_diff / block_size; 466 467 if (size_diff % block_size != 0) { 467 blocks_count++;468 } 469 470 uint32_t total_blocks= old_size / block_size;468 diff_blocks_count++; 469 } 470 471 uint32_t old_blocks_count = old_size / block_size; 471 472 if (old_size % block_size != 0) { 472 total_blocks++;473 old_blocks_count++; 473 474 } 474 475 475 476 // starting from 1 because of logical blocks are numbered from 0 476 for (uint32_t i = 1; i <= blocks_count; ++i) { 477 // TODO check retval 478 ext4_filesystem_release_inode_block(fs, inode_ref, total_blocks - i); 477 for (uint32_t i = 1; i <= diff_blocks_count; ++i) { 478 rc = ext4_filesystem_release_inode_block(fs, inode_ref, old_blocks_count - i); 479 if (rc != EOK) { 480 return rc; 481 } 479 482 } 480 483
Note:
See TracChangeset
for help on using the changeset viewer.