xfs
[Top] [All Lists]

PARTIAL TAKE 928864 - [SUSE#76685] Inode extent management causes high o

To: linux-xfs@xxxxxxx, sgi.bugs.xfs@xxxxxxx
Subject: PARTIAL TAKE 928864 - [SUSE#76685] Inode extent management causes high order page allocations
From: alkirkco@xxxxxxx (Amanda Kirkconnell)
Date: Thu, 2 Mar 2006 17:15:36 -0600 (CST)
Sender: linux-xfs-bounce@xxxxxxxxxxx
This mod re-organizes some of the in-core file extent code to prepare
for an upcoming mod which will introduce multi-level in-core extent
allocations. Although the in-core extent management is using a new
code path in this mod, the functionality remains the same.

Major changes include:

- Introduce 10 new subroutines which re-orgainze the existing code but
  do NOT change functionality:
        xfs_iext_get_ext()
        xfs_iext_insert()
        xfs_iext_add()
        xfs_iext_remove()
        xfs_iext_remove_inline()
        xfs_iext_remove_direct()
        xfs_iext_realloc_direct()
        xfs_iext_direct_to_inline()
        xfs_iext_inline_to_direct()
        xfs_iext_destroy()

- Remove 2 subroutines (functionality moved to new subroutines above):
        xfs_iext_realloc() -replaced by xfs_iext_add() and xfs_iext_remove()
        xfs_bmap_insert_exlist() - replaced by xfs_iext_insert()
        xfs_bmap_delete_exlist() - replaced by xfs_iext_remove()

- Replace all hard-coded (indexed) extent assignments with a call to
  xfs_iext_get_ext()

- Replace all extent record pointer arithmetic (ep++, ep--, base + lastx,..)
  with calls to xfs_iext_get_ext()

- Update comments to remove the idea of a single "extent list" and
  introduce "extent record" terminology instead


Date:  Thu Mar  2 15:08:14 PST 2006
Workarea:  attica.americas.sgi.com:/data/lwork/attica2/alkirkco/XFS/2.6.x-xfs
Inspected by:  olaf,gwehrman,dgc,nathans,felixb

The following file(s) were checked into:
  bonnie.engr.sgi.com:/isms/linux/2.6.x-xfs


Modid:  xfs-linux:xfs-kern:207390a
fs/xfs/xfsidbg.c - 1.293 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfsidbg.c.diff?r1=text&tr1=1.293&r2=text&tr2=1.292&f=h
        - Replace indexed extent assignment with a call to xfs_iext_get_ext()

fs/xfs/xfs_bmap_btree.c - 1.151 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_bmap_btree.c.diff?r1=text&tr1=1.151&r2=text&tr2=1.150&f=h
        - Change first parameter of xfs_check_nostate_extents() from an extent 
pointer
          (*xfs_bmbt_rec_t*) to two parameters: 1) inode fork pointer 
(xfs_ifork_t*), 
          and 2) the index of the extent (xfs_extnum_t). These new parameters 
are needed
          for the call to xfs_iext_get_ext() in xfs_check_nostate_extents().
        - Replace indexed extent assignment with a call to xfs_iext_get_ext()

fs/xfs/xfs_inode.c - 1.426 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_inode.c.diff?r1=text&tr1=1.426&r2=text&tr2=1.425&f=h
        - Add 10 new subroutines to re-organize the in-core extent management 
code:
          xfs_iext_get_ext()
          xfs_iext_insert()
          xfs_iext_add()
          xfs_iext_remove()
          xfs_iext_remove_inline()
          xfs_iext_remove_direct()
          xfs_iext_realloc_direct()
          xfs_iext_direct_to_inline()
          xfs_iext_inline_to_direct()
          xfs_iext_destroy()
        - Replace indexed extent assignments with calls to xfs_iext_get_ext()
        - Replace extent record pointer arithmetic (ep++, ep--, base + lastx,..)
          with calls to xfs_iext_get_ext()
        - Modify xfs_validate_extents() parameters so that xfs_iext_get_ext()
          can be called from xfs_validate_extents()
        - Update comments to remove the idea of a single "extent list" and
          replace with "extent record" terminology instead

fs/xfs/xfs_inode.h - 1.208 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_inode.h.diff?r1=text&tr1=1.208&r2=text&tr2=1.207&f=h
        - Add prototypes for new xfs_iext_* functions in xfs_inode.c.
        - Remove XFS_MAX_INCORE_EXTENTS macro, which is 1) never used,
          and 2) a bogus number.

fs/xfs/xfs_bmap.h - 1.93 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_bmap.h.diff?r1=text&tr1=1.93&r2=text&tr2=1.92&f=h
        - Change first parameter of xfs_check_nostate_extents() from an extent 
pointer
          (*xfs_bmbt_rec_t*) to two parameters: 1) inode fork pointer 
(xfs_ifork_t*),
          and 2) the index of the extent (xfs_extnum_t). These new parameters 
are needed
          for the call to xfs_iext_get_ext() in xfs_check_nostate_extents().

fs/xfs/xfs_bmap.c - 1.340 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_bmap.c.diff?r1=text&tr1=1.340&r2=text&tr2=1.339&f=h
        - Replace indexed extent assignments with calls to xfs_iext_get_ext()
        - Remove xfs_bmap_insert_exlist() and xfs_bmap_delete_exlist() and
          replace all calls by xfs_iext_insert() and xfs_iext_remove(),
          respectively.
        - Update documentation and replace "extent list" terminology with
          "extent record"

fs/xfs/quota/xfs_qm.c - 1.35 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/quota/xfs_qm.c.diff?r1=text&tr1=1.35&r2=text&tr2=1.34&f=h
        - Replace indexed extent assignment with a call to xfs_iext_get_ext()

fs/xfs/linux-2.6/xfs_ksyms.c - 1.39 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_ksyms.c.diff?r1=text&tr1=1.39&r2=text&tr2=1.38&f=h
        - Export new functions needed by CXFS 4.1:
          xfs_iext_add()
          xfs_iext_destroy()
          xfs_iext_get_ext()
          xfs_iext_insert()
          xfs_iext_remove()

fs/xfs/linux-2.4/xfs_ksyms.c - 1.34 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.4/xfs_ksyms.c.diff?r1=text&tr1=1.34&r2=text&tr2=1.33&f=h
        - Export new functions needed by CXFS 4.1:
          xfs_iext_add()
          xfs_iext_destroy()
          xfs_iext_get_ext()
          xfs_iext_insert()
          xfs_iext_remove()



<Prev in Thread] Current Thread [Next in Thread>
  • PARTIAL TAKE 928864 - [SUSE#76685] Inode extent management causes high order page allocations, Amanda Kirkconnell <=