• M
    [XFS] 929045 567344 This mod introduces multi-level in-core file extent · 0293ce3a
    Mandy Kirkconnell 提交于
    functionality, building upon the new layout introduced in mod
    xfs-linux:xfs-kern:207390a.  The new multi-level extent allocations are
    only required for heavily fragmented files, so the old-style linear extent
    list is used on files until the extents reach a pre-determined size of 4k.
    4k buffers are used because this is the system page size on Linux i386 and
    systems with larger page sizes don't seem to gain much, if anything, by
    using their native page size as the extent buffer size. Also, using 4k
    extent buffers everywhere provides a consistent interface for CXFS across
    different platforms.  The 4k extent buffers are managed by an indirection
    array (xfs_ext_irec_t) which is basically just a pointer array with a bit
    of extra information to keep track of the number of extents in each buffer
    as well as the extent offset of each buffer.  Major changes include:  -
    Add multi-level in-core file extent functionality to the xfs_iext_  
    subroutines introduced in mod:	xfs-linux:xfs-kern:207390a  - Introduce 13
    new subroutines which add functionality for multi-level   in-core file
    extents:	 xfs_iext_add_indirect_multi()	      
    xfs_iext_remove_indirect()	   xfs_iext_realloc_indirect()	      
    xfs_iext_indirect_to_direct()	      xfs_iext_bno_to_irec()	    
    xfs_iext_idx_to_irec()	       xfs_iext_irec_init()	   
    xfs_iext_irec_new()	    xfs_iext_irec_remove()	  
    xfs_iext_irec_compact() 	xfs_iext_irec_compact_pages()	     
    xfs_iext_irec_compact_full()	     xfs_iext_irec_update_extoffs()
    
    SGI-PV: 928864
    SGI-Modid: xfs-linux-melb:xfs-kern:207393a
    Signed-off-by: NMandy Kirkconnell <alkirkco@sgi.com>
    Signed-off-by: NNathan Scott <nathans@sgi.com>
    0293ce3a
xfs_inode.c 133.1 KB