Changeset 8958a26 in mainline for uspace/lib/ext4/libext4_inode.c


Ignore:
Timestamp:
2011-10-11T19:06:10Z (14 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1a7756a
Parents:
acd869e
Message:

Extent reading (only with zero depth)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext4/libext4_inode.c

    racd869e r8958a26  
    104104uint32_t ext4_inode_get_extent_block(ext4_inode_t *inode, uint64_t idx)
    105105{
    106         //ext4_extent_header_t *header = ext4_inode_get_extent_header(inode);
    107         // TODO search required block
     106        ext4_extent_header_t *header = ext4_inode_get_extent_header(inode);
     107
     108        if (ext4_extent_header_get_depth(header) == 0) {
     109
     110                ext4_extent_t *extent = EXT4_EXTENT_FIRST(header);
     111
     112                // TODO more effective searching?
     113                for (uint16_t i = 0; i < ext4_extent_header_get_entries_count(header); ++i) {
     114
     115                        uint32_t first = ext4_extent_get_first_block(extent);
     116                        uint16_t count = ext4_extent_get_block_count(extent);
     117                        uint64_t block = 0;
     118
     119                        if ((idx >= first) && (idx < first + count)) {
     120                                block = ext4_extent_get_start(extent) + idx;
     121                                block -= ext4_extent_get_first_block(extent);
     122                                return block;
     123                        }
     124                        // Go to the next extent
     125                        ++extent;
     126                }
     127        }
     128
     129        // TODO binary search for depth > 0
     130        EXT4FS_DBG("NOT IMPLEMENTED !!!");
    108131        return 0;
    109132
Note: See TracChangeset for help on using the changeset viewer.