Changeset b12ca16 in mainline for uspace/lib/ext4/libext4_filesystem.c
- Timestamp:
- 2011-11-18T15:30:24Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d5ba17f
- Parents:
- e18de3c
- File:
-
- 1 edited
-
uspace/lib/ext4/libext4_filesystem.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/libext4_filesystem.c
re18de3c rb12ca16 72 72 73 73 /* Initialize block caching */ 74 // TODO set cache MODE to write through (now writeback for faster testing) 75 rc = block_cache_init(service_id, block_size, 0, CACHE_MODE_WB); 74 rc = block_cache_init(service_id, block_size, 0, CACHE_MODE_WT); 76 75 if (rc != EOK) { 77 76 block_fini(fs->device); … … 387 386 // TODO 388 387 return ENOTSUP; 389 390 388 } 391 389 … … 418 416 419 417 if (current_block == 0) { 420 rc = ext4_b itmap_alloc_block(fs, inode_ref, &new_block_addr);418 rc = ext4_balloc_alloc_block(fs, inode_ref, &new_block_addr); 421 419 if (rc != EOK) { 422 420 // TODO error … … 460 458 current_block = uint32_t_le2host(((uint32_t*)block->data)[offset_in_block]); 461 459 462 if (current_block == 0) { 463 if (level > 1) { 464 465 rc = ext4_bitmap_alloc_block(fs, inode_ref, &new_block_addr); 466 if (rc != EOK) { 467 // TODO error 468 EXT4FS_DBG("allocation error"); 469 } 470 471 rc = block_get(&new_block, fs->device, new_block_addr, BLOCK_FLAGS_NOREAD); 472 if (rc != EOK) { 473 // TODO error 474 475 EXT4FS_DBG("BBB: error block loading"); 476 477 } 478 memset(new_block->data, 0, block_size); 479 new_block->dirty = true; 480 481 block_put(new_block); 482 483 ((uint32_t*)block->data)[offset_in_block] = host2uint32_t_le(new_block_addr); 484 block->dirty = true; 485 current_block = new_block_addr; 486 } else { 487 ((uint32_t*)block->data)[offset_in_block] = host2uint32_t_le(fblock); 488 block->dirty = true; 460 if ((level > 1) && (current_block == 0)) { 461 rc = ext4_balloc_alloc_block(fs, inode_ref, &new_block_addr); 462 if (rc != EOK) { 463 // TODO error 464 EXT4FS_DBG("allocation error"); 489 465 } 466 EXT4FS_DBG("BBB: new addr \%u, offset = \%u, level = \%u", new_block_addr, offset_in_block, level); 467 468 rc = block_get(&new_block, fs->device, new_block_addr, BLOCK_FLAGS_NOREAD); 469 if (rc != EOK) { 470 // TODO error 471 472 EXT4FS_DBG("BBB: error block loading"); 473 474 } 475 memset(new_block->data, 0, block_size); 476 new_block->dirty = true; 477 478 rc = block_put(new_block); 479 if (rc != EOK) { 480 EXT4FS_DBG("BBB: error indirect block saving"); 481 } 482 483 ((uint32_t*)block->data)[offset_in_block] = host2uint32_t_le(new_block_addr); 484 block->dirty = true; 485 current_block = new_block_addr; 486 } 487 488 if (level == 1) { 489 ((uint32_t*)block->data)[offset_in_block] = host2uint32_t_le(fblock); 490 block->dirty = true; 490 491 } 491 492 … … 537 538 538 539 ext4_inode_set_direct_block(inode, iblock, 0); 539 return ext4_b itmap_free_block(fs, inode_ref, fblock);540 return ext4_balloc_free_block(fs, inode_ref, fblock); 540 541 } 541 542 … … 601 602 } 602 603 603 return ext4_bitmap_free_block(fs, inode_ref, fblock); 604 605 } 606 604 return ext4_balloc_free_block(fs, inode_ref, fblock); 605 606 } 607 607 608 608 /**
Note:
See TracChangeset
for help on using the changeset viewer.
