Changeset 4cdac68 in mainline for uspace/lib/ext4/libext4_balloc.c
- Timestamp:
- 2012-07-20T20:27:31Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
- Children:
- b828907
- Parents:
- 865a4bf
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/libext4_balloc.c
r865a4bf r4cdac68 40 40 #include "libext4.h" 41 41 42 /** Convert block address to relative index in block group.43 *44 * @param sb superblock pointer45 * @param block_addr block number to convert46 * @return relative number of block47 */48 static uint32_t ext4_balloc_blockaddr2_index_in_group(ext4_superblock_t *sb,49 uint32_t block_addr)50 {51 uint32_t blocks_per_group = ext4_superblock_get_blocks_per_group(sb);52 uint32_t first_block = ext4_superblock_get_first_data_block(sb);53 54 /* First block == 0 or 1 */55 if (first_block == 0) {56 return block_addr % blocks_per_group;57 } else {58 return (block_addr - 1) % blocks_per_group;59 }60 }61 62 /** Convert relative block number to absolute.63 *64 * @param sb superblock pointer65 * @param index relative index of block in group66 * @param bgid index of block group67 * @return absolute number of block68 */69 static uint32_t ext4_balloc_index_in_group2blockaddr(ext4_superblock_t *sb,70 uint32_t index, uint32_t bgid)71 {72 uint32_t blocks_per_group = ext4_superblock_get_blocks_per_group(sb);73 74 if (ext4_superblock_get_first_data_block(sb) == 0) {75 return bgid * blocks_per_group + index;76 } else {77 return bgid * blocks_per_group + index + 1;78 }79 80 }81 82 42 /** Compute number of block group from block address. 83 43 * … … 116 76 /* Compute indexes */ 117 77 uint32_t block_group = ext4_balloc_get_bgid_of_block(sb, block_addr); 118 uint32_t index_in_group = ext4_balloc_blockaddr2_index_in_group(sb, block_addr); 78 uint32_t index_in_group = 79 ext4_filesystem_blockaddr2_index_in_group(sb, block_addr); 119 80 120 81 /* Load block group reference */ … … 213 174 214 175 uint32_t index_in_group_first = 215 ext4_ balloc_blockaddr2_index_in_group(sb, first);176 ext4_filesystem_blockaddr2_index_in_group(sb, first); 216 177 217 178 … … 278 239 * @return absolute block index of first block 279 240 */ 280 staticuint32_t ext4_balloc_get_first_data_block_in_group(241 uint32_t ext4_balloc_get_first_data_block_in_group( 281 242 ext4_superblock_t *sb, ext4_block_group_ref_t *bg_ref) 282 243 { … … 415 376 /* Load block group number for goal and relative index */ 416 377 uint32_t block_group = ext4_balloc_get_bgid_of_block(sb, goal); 417 uint32_t index_in_group = ext4_balloc_blockaddr2_index_in_group(sb, goal); 378 uint32_t index_in_group = 379 ext4_filesystem_blockaddr2_index_in_group(sb, goal); 418 380 419 381 … … 430 392 ext4_balloc_get_first_data_block_in_group(sb, bg_ref); 431 393 432 uint32_t first_in_group_index = ext4_ balloc_blockaddr2_index_in_group(394 uint32_t first_in_group_index = ext4_filesystem_blockaddr2_index_in_group( 433 395 sb, first_in_group); 434 396 … … 460 422 } 461 423 462 allocated_block = ext4_ balloc_index_in_group2blockaddr(424 allocated_block = ext4_filesystem_index_in_group2blockaddr( 463 425 sb, index_in_group, block_group); 464 426 … … 486 448 } 487 449 488 allocated_block = ext4_ balloc_index_in_group2blockaddr(450 allocated_block = ext4_filesystem_index_in_group2blockaddr( 489 451 sb, tmp_idx, block_group); 490 452 … … 504 466 } 505 467 506 allocated_block = ext4_ balloc_index_in_group2blockaddr(468 allocated_block = ext4_filesystem_index_in_group2blockaddr( 507 469 sb, rel_block_idx, block_group); 508 470 … … 520 482 } 521 483 522 allocated_block = ext4_ balloc_index_in_group2blockaddr(484 allocated_block = ext4_filesystem_index_in_group2blockaddr( 523 485 sb, rel_block_idx, block_group); 524 486 … … 557 519 first_in_group = ext4_balloc_get_first_data_block_in_group( 558 520 sb, bg_ref); 559 index_in_group = ext4_ balloc_blockaddr2_index_in_group(sb,521 index_in_group = ext4_filesystem_blockaddr2_index_in_group(sb, 560 522 first_in_group); 561 523 blocks_in_group = ext4_superblock_get_blocks_in_group(sb, bgid); 562 524 563 first_in_group_index = ext4_ balloc_blockaddr2_index_in_group(525 first_in_group_index = ext4_filesystem_blockaddr2_index_in_group( 564 526 sb, first_in_group); 565 527 … … 578 540 } 579 541 580 allocated_block = ext4_ balloc_index_in_group2blockaddr(542 allocated_block = ext4_filesystem_index_in_group2blockaddr( 581 543 sb, rel_block_idx, bgid); 582 544 … … 594 556 } 595 557 596 allocated_block = ext4_ balloc_index_in_group2blockaddr(558 allocated_block = ext4_filesystem_index_in_group2blockaddr( 597 559 sb, rel_block_idx, bgid); 598 560 … … 656 618 /* Compute indexes */ 657 619 uint32_t block_group = ext4_balloc_get_bgid_of_block(sb, fblock); 658 uint32_t index_in_group = ext4_balloc_blockaddr2_index_in_group(sb, fblock); 620 uint32_t index_in_group = 621 ext4_filesystem_blockaddr2_index_in_group(sb, fblock); 659 622 660 623 /* Load block group reference */
Note:
See TracChangeset
for help on using the changeset viewer.