xfs
[Top] [All Lists]

[XFS updates] XFS development tree branch, master, updated. v2.6.30-rc4-

To: xfs@xxxxxxxxxxx
Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.30-rc4-12474-gaa72a5c
From: xfs@xxxxxxxxxxx
Date: Tue, 1 Sep 2009 16:41:22 -0500
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "XFS development tree".

The branch, master has been updated
  aa72a5c xfs: simplify xfs_trans_iget
  13e6d5c xfs: merge fsync and O_SYNC handling
  bd16956 xfs: speed up free inode search
  2187550 xfs: rationalize xfs_inobt_lookup*
  4254b0b xfs: untangle xfs_dialloc
  0b48db8 xfs: factor out debug checks from xfs_dialloc and xfs_difree
  afabc24 xfs: improve xfs_inobt_update prototype
  2e287a7 xfs: improve xfs_inobt_get_rec prototype
  85c0b2a xfs: factor out inode initialisation
      from  1da1daed813c534263a87ffc36d5b775e65231ad (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit aa72a5cf00001d0b952c7c755be404b9118ceb2e
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Mon Aug 31 21:51:52 2009 -0300

    xfs: simplify xfs_trans_iget
    
    xfs_trans_iget is a wrapper for xfs_iget that adds the inode to the
    transaction after it is read.  Except when the inode already is in the
    inode cache, in which case it returns the existing locked inode with
    increment lock recursion counts.
    
    Now, no one in the tree every decrements these lock recursion counts,
    so any user of this gets a potential double unlock when both the original
    owner of the inode and the xfs_trans_iget caller unlock it.  When looking
    back in a git bisect in the historic XFS tree there was only one place
    that decremented these counts, xfs_trans_iput.  Introduced in commit
    ca25df7a840f426eb566d52667b6950b92bb84b5 by Adam Sweeney in 1993,
    and removed in commit 19f899a3ab155ff6a49c0c79b06f2f61059afaf3 by
    Steve Lord in 2003.  And as long as it didn't slip through git bisects
    cracks never actually used in that time frame.
    
    A quick audit of the callers of xfs_trans_iget shows that no caller
    really relies on this behaviour fortunately - xfs_ialloc allows this
    inode from disk so it must not be there before, and all the RT allocator
    routines only every add each RT bitmap inode once.
    
    In addition to removing lots of code and reducing the size of the inode
    item this patch also avoids the double inode cache lookup in each
    create/mkdir/mknod transaction.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

commit 13e6d5cdde0e785aa943810f08b801cadd0935df
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Mon Aug 31 21:00:31 2009 -0300

    xfs: merge fsync and O_SYNC handling
    
    The guarantees for O_SYNC are exactly the same as the ones we need to
    make for an fsync call (and given that Linux O_SYNC is O_DSYNC the
    equivalent is fdadatasync, but we treat both the same in XFS), except
    with a range data writeout.  Jan Kara has started unifying these two
    path for filesystems using the generic helpers, and I've started to
    look at XFS.
    
    The actual transaction commited by xfs_fsync and xfs_write_sync_logforce
    has a different transaction number, but actually is exactly the same.
    We'll only use the fsync transaction going forward.  One major difference
    is that xfs_write_sync_logforce never issues a cache flush unless we
    commit a transaction causing that as a side-effect, which is an obvious
    bug in the O_SYNC handling.  Second all the locking and i_update_size
    vs i_update_core changes from 978b7237123d007b9fa983af6e0e2fa8f97f9934
    never made it to xfs_write_sync_logforce, so we add them back.
    
    To make xfs_fsync easily usable from the O_SYNC path, the filemap_fdatawait
    call is moved up to xfs_file_fsync, so that we don't wait on the whole
    file after we already waited for our portion in xfs_write.
    
    We'll also use a plain call to filemap_write_and_wait_range instead
    of the previous sync_page_rang which did it in two steps including
    an half-hearted inode write out that doesn't help us.
    
    Once we're done with this also remove the now useless i_update_size
    tracking.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Felix Blyakher <felixb@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

commit bd169565993b39b9b4b102cdac8b13e0a259ce2f
Author: Dave Chinner <dgc@xxxxxxx>
Date:   Mon Aug 31 20:58:28 2009 -0300

    xfs: speed up free inode search
    
    Don't search too far - abort if it is outside a certain radius and simply do
    a linear search for the first free inode.  In AGs with a million inodes this
    can speed up allocation speed by 3-4x.
    
    [hch: ported to the new xfs_ialloc.c world order]
    
    Signed-off-by: Dave Chinner <dgc@xxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

commit 2187550525d7bcb8c87689e4eca41b1955bf9ac3
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Mon Aug 31 20:58:21 2009 -0300

    xfs: rationalize xfs_inobt_lookup*
    
    Currenly we have a xfs_inobt_lookup* variant for each comparism direction,
    and all these get all three fields of the inobt records passed, while the
    common case is just looking for the inode number and we have only marginally
    more callers than xfs_inobt_lookup* variants.
    
    So opencode a direct call to xfs_btree_lookup for the single case where we
    need all fields, and replace xfs_inobt_lookup* with a xfs_inobt_looku that
    just takes the inode number and the direction for all other callers.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

commit 4254b0bbb1c0826b7443ffa593576696bc591aa2
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Mon Aug 31 20:57:14 2009 -0300

    xfs: untangle xfs_dialloc
    
    Clarify the control flow in xfs_dialloc.  Factor out a helper to go to the
    next node from the current one and improve the control flow by expanding
    composite if statements and using gotos.
    
    The xfs_ialloc_next_rec helper is borrowed from Dave Chinners dynamic
    allocation policy patches.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

commit 0b48db80ba689edfd96ed06c3124d6cf1146de3f
Author: Dave Chinner <dgc@xxxxxxx>
Date:   Mon Aug 31 20:57:09 2009 -0300

    xfs: factor out debug checks from xfs_dialloc and xfs_difree
    
    Factor out a common helper from repeated debug checks in xfs_dialloc and
    xfs_difree.
    
    [hch: split out from Dave's dynamic allocation policy patches]
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

commit afabc24a73bfee2656724b0a70395f1693eaa62b
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Mon Aug 31 20:57:03 2009 -0300

    xfs: improve xfs_inobt_update prototype
    
    Both callers of xfs_inobt_update have the record in form of a
    xfs_inobt_rec_incore_t, so just pass a pointer to it instead of the
    individual variables.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

commit 2e287a731e0607e0371dc6165b7dd3ebc67fa8e1
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Mon Aug 31 20:56:58 2009 -0300

    xfs: improve xfs_inobt_get_rec prototype
    
    Most callers of xfs_inobt_get_rec need to fill a xfs_inobt_rec_incore_t, and
    those who don't yet are fine with a xfs_inobt_rec_incore_t, instead of the
    three individual variables, too.  So just change xfs_inobt_get_rec to write
    the output into a xfs_inobt_rec_incore_t directly.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

commit 85c0b2ab5e69ca6133380ead1c50e0840d136b39
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Aug 31 20:56:51 2009 -0300

    xfs: factor out inode initialisation
    
    Factor out code to initialize new inode clusters into a function of it's 
own.
    This keeps xfs_ialloc_ag_alloc smaller and better structured and enables a
    future inode cluster initialization transaction.  Also initialize the agno
    variable earlier in xfs_ialloc_ag_alloc to avoid repeated byte swaps.
    
    [hch:  The original patch is from Dave from his unpublished inode create
     transaction patch series, with some modifcations by me to apply 
stand-alone]
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Felix Blyakher <felixb@xxxxxxx>

-----------------------------------------------------------------------

Summary of changes:
 fs/xfs/linux-2.6/xfs_aops.c |    1 -
 fs/xfs/linux-2.6/xfs_file.c |   19 +-
 fs/xfs/linux-2.6/xfs_lrw.c  |    7 +-
 fs/xfs/xfs_ag.h             |    9 +
 fs/xfs/xfs_ialloc.c         |  805 ++++++++++++++++++++++---------------------
 fs/xfs/xfs_ialloc.h         |   18 +-
 fs/xfs/xfs_iget.c           |   27 --
 fs/xfs/xfs_inode.h          |    3 -
 fs/xfs/xfs_inode_item.c     |   10 -
 fs/xfs/xfs_inode_item.h     |    2 -
 fs/xfs/xfs_itable.c         |   96 +++---
 fs/xfs/xfs_rw.c             |   84 -----
 fs/xfs/xfs_rw.h             |    1 -
 fs/xfs/xfs_trans.h          |    2 +-
 fs/xfs/xfs_trans_inode.c    |   86 +-----
 fs/xfs/xfs_vnodeops.c       |   11 +-
 16 files changed, 499 insertions(+), 682 deletions(-)


hooks/post-receive
-- 
XFS development tree

<Prev in Thread] Current Thread [Next in Thread>
  • [XFS updates] XFS development tree branch, master, updated. v2.6.30-rc4-12474-gaa72a5c, xfs <=