• D
    xfs: Add read-only support for dirent filetype field · 0cb97766
    Dave Chinner 提交于
    Add support for the file type field in directory entries so that
    readdir can return the type of the inode the dirent points to to
    userspace without first having to read the inode off disk.
    
    The encoding of the type field is a single byte that is added to the
    end of the directory entry name length. For all intents and
    purposes, it appends a "hidden" byte to the name field which
    contains the type information. As the directory entry is already of
    dynamic size, helpers are already required to access and decode the
    direct entry structures.
    
    Hence the relevent extraction and iteration helpers are updated to
    understand the hidden byte.  Helpers for reading and writing the
    filetype field from the directory entries are also added. Only the
    read helpers are used by this patch.  It also adds all the code
    necessary to read the type information out of the dirents on disk.
    
    Further we add the superblock feature bit and helpers to indicate
    that we understand the on-disk format change. This is not a
    compatible change - existing kernels cannot read the new format
    successfully - so an incompatible feature flag is added. We don't
    yet allow filesystems to mount with this flag yet - that will be
    added once write support is added.
    
    Finally, the code to take the type from the VFS, convert it to an
    XFS on-disk type and put it into the xfs_name structures passed
    around is added, but the directory code does not use this field yet.
    That will be in the next patch.
    Signed-off-by: NDave Chinner <dchinner@redhat.com>
    Reviewed-by: NMark Tinguely <tinguely@sgi.com>
    Signed-off-by: NBen Myers <bpm@sgi.com>
    0cb97766
xfs_dir2_block.c 35.0 KB