Changeset ce6de59 in mainline for uspace/lib/ext4/libext4_filesystem.c


Ignore:
Timestamp:
2012-04-07T14:41:19Z (13 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3b5c119
Parents:
5b16912
Message:

First part → allocating first block to extent (not for extent with some blocks)

File:
1 edited

Legend:

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

    r5b16912 rce6de59  
    323323        }
    324324
    325         // TODO extents, dir_index etc...
     325        // TODO dir_index initialization
    326326
    327327        rc = ext4_filesystem_get_inode_ref(fs, index, inode_ref);
     
    340340                ext4_inode_set_mode(fs->superblock, inode, EXT4_INODE_MODE_FILE);
    341341                ext4_inode_set_links_count(inode, 0);
     342        }
     343
     344        if (ext4_superblock_has_feature_incompatible(
     345                        fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS)) {
     346                ext4_inode_set_flag(inode, EXT4_INODE_FLAG_EXTENTS);
    342347        }
    343348
     
    666671        if (ext4_superblock_has_feature_compatible(fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS) &&
    667672                        ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_EXTENTS)) {
    668                 // TODO
     673                // not reachable !!!
    669674                return ENOTSUP;
    670675        }
     
    802807        ext4_filesystem_t *fs = inode_ref->fs;
    803808
    804         // EXTENTS are handled
     809        // EXTENTS are handled otherwise
    805810        assert(! (ext4_superblock_has_feature_incompatible(fs->superblock,
    806811                        EXT4_FEATURE_INCOMPAT_EXTENTS) &&
     
    890895                uint32_t *fblock, uint32_t *iblock)
    891896{
    892 
    893         // TODO append to extent
    894 
    895         int rc;
     897        int rc;
     898
     899        // Handle extents separately
     900        if (ext4_superblock_has_feature_incompatible(
     901                        inode_ref->fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS) &&
     902                        ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_EXTENTS)) {
     903
     904                return ext4_extent_append_block(inode_ref, iblock, fblock);
     905
     906        }
    896907
    897908        ext4_superblock_t *sb = inode_ref->fs->superblock;
Note: See TracChangeset for help on using the changeset viewer.