xfs
[Top] [All Lists]

[XFS updates] XFS development tree branch, master, updated. v2.6.33-69-g

To: xfs@xxxxxxxxxxx
Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.33-69-gf1f724e
From: xfs@xxxxxxxxxxx
Date: Tue, 2 Mar 2010 19:01:16 -0600
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
  f1f724e xfs: fix locking for inode cache radix tree tag updates
  a14a5ab xfs: remove xfs_ipin/xfs_iunpin
  60ec678 xfs: cleanup xfs_iunpin_wait/xfs_iunpin_nowait
  d7658d4 xfs: kill xfs_lrw.h
  d7e84f4 xfs: factor common xfs_trans_bjoin code
  35a8a72 xfs: stop passing opaque handles to xfs_log.c routines
  c467c04 xfs: split xfs_bmap_btalloc
  f7008d0 xfs: fix xfs_fsblock_t tracing
  024910c xfs: fix inode pincount check in fsync
  77d7a0c xfs: Non-blocking inode locking in IO completion
  66d834e xfs: implement optimized fdatasync
  fd3200b xfs: remove wrapper for the fsync file operation
  00258e3 xfs: remove wrappers for read/write file operations
  dda35b8 xfs: merge xfs_lrw.c into xfs_file.c
  b262e5d xfs: fix dquota trace format
  a9cc799 xfs: increase readdir buffer size
      from  398007f863a4af2b4a5a07219c5a617f1a098115 (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 f1f724e4b523d444c5a598d74505aefa3d6844d2
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Mar 1 11:30:31 2010 +0000

    xfs: fix locking for inode cache radix tree tag updates
    
    The radix-tree code requires it's users to serialize tag updates
    against other updates to the tree.  While XFS protects tag updates
    against each other it does not serialize them against updates of the
    tree contents, which can lead to tag corruption.  Fix the inode
    cache to always take pag_ici_lock in exclusive mode when updating
    radix tree tags.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reported-by: Patrick Schreurs <patrick@xxxxxxxxxxxxxxxx>
    Tested-by: Patrick Schreurs <patrick@xxxxxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit a14a5ab58f9d783ec3a2a287320fab22e1764813
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Thu Feb 18 12:43:22 2010 +0000

    xfs: remove xfs_ipin/xfs_iunpin
    
    Inodes are only pinned/unpinned via the inode item methods, and lots of
    code relies on that fact.  So remove the separate xfs_ipin/xfs_iunpin
    helpers and merge them into their only callers.  This also fixes up
    various duplicate and/or incorrect comments.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 60ec678371183f6e0d487e55fe8adbb33816518e
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Feb 17 19:43:56 2010 +0000

    xfs: cleanup xfs_iunpin_wait/xfs_iunpin_nowait
    
    Remove the inode item pointer and ili_last_lsn checks in
    __xfs_iunpin_wait as any pinned inode is guaranteed to have them
    valid.  After this the xfs_iunpin_nowait case is nothing more than a
    xfs_log_force_lsn, as we know that the caller has already checked
    the pincount.
    
    Make xfs_iunpin_nowait the new low-level routine just doing the log
    force and rewrite xfs_iunpin_wait around it.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit d7658d487f4c62983015ba6c99f02dedb3ea97c7
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Feb 17 19:36:13 2010 +0000

    xfs: kill xfs_lrw.h
    
    Move the two declarations to better fitting headers now that
    xfs_lrw.c is gone.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit d7e84f413726876c0ec66bbf90770f69841f7663
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Feb 15 23:35:09 2010 +0000

    xfs: factor common xfs_trans_bjoin code
    
    Most of xfs_trans_bjoin is duplicated in xfs_trans_get_buf,
    xfs_trans_getsb and xfs_trans_read_buf.  Add a new _xfs_trans_bjoin
    which can be called by all four functions.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 35a8a72f064105807b091a21e004893b219c9ed2
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Feb 15 23:34:54 2010 +0000

    xfs: stop passing opaque handles to xfs_log.c routines
    
    Currenly we pass opaque xfs_log_ticket_t handles instead of
    struct xlog_ticket pointers, and void pointers instead of
    struct xlog_in_core pointers to various log manager functions.
    Instead pass properly typed pointers after adding forward
    declarations for them to xfs_log.h, and adjust the touched
    function prototypes to the standard XFS style while at it.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit c467c049e7e6e8b8fe9f38b13b20a4cf7e03f36b
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Feb 15 23:34:42 2010 +0000

    xfs: split xfs_bmap_btalloc
    
    Split out the nullfb case into a separate function to reduce the stack
    footprint and make the code more readable.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit f7008d0aeba21396b3422df135b692ae701bd0c8
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Feb 15 22:02:19 2010 +0000

    xfs: fix xfs_fsblock_t tracing
    
    Using a static buffer in xfs_fmtfsblock means we can corrupt traces if
    multiple CPUs hit this code path at the same.  Just remove xfs_fmtfsblock
    for now and print the block number purely numerical.  If we want the
    NULLFSBLOCK and NULLSTARTBLOCK formatting back the best way would be
    a decoding plugin in the trace-cmd userspace command.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 024910cbac323ab2e5ad6d7fa7958799b04b9728
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Feb 17 19:34:57 2010 +0000

    xfs: fix inode pincount check in fsync
    
    We need to hold the ilock to check the inode pincount safely.  While
    we're at it also remove the check for ip->i_itemp->ili_last_lsn, a
    pinned inode always has it set.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 77d7a0c2eeb285c9069e15396703d0cb9690ac50
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Feb 17 05:36:29 2010 +0000

    xfs: Non-blocking inode locking in IO completion
    
    The introduction of barriers to loop devices has created a new IO
    order completion dependency that XFS does not handle. The loop
    device implements barriers using fsync and so turns a log IO in the
    XFS filesystem on the loop device into a data IO in the backing
    filesystem. That is, the completion of log IOs in the loop
    filesystem are now dependent on completion of data IO in the backing
    filesystem.
    
    This can cause deadlocks when a flush daemon issues a log force with
    an inode locked because the IO completion of IO on the inode is
    blocked by the inode lock. This in turn prevents further data IO
    completion from occuring on all XFS filesystems on that CPU (due to
    the shared nature of the completion queues). This then prevents the
    log IO from completing because the log is waiting for data IO
    completion as well.
    
    The fix for this new completion order dependency issue is to make
    the IO completion inode locking non-blocking. If the inode lock
    can't be grabbed, simply requeue the IO completion back to the work
    queue so that it can be processed later. This prevents the
    completion queue from being blocked and allows data IO completion on
    other inodes to proceed, hence avoiding completion order dependent
    deadlocks.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 66d834ea603d61bd90fedad90300ca91c5bba0a3
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Feb 15 09:44:49 2010 +0000

    xfs: implement optimized fdatasync
    
    Allow us to track the difference between timestamp and size updates
    by using mark_inode_dirty from the I/O completion code, and checking
    the VFS inode flags in xfs_file_fsync.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit fd3200bef7d66ed3924f72c79a465fb7ff85478a
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Feb 15 09:44:48 2010 +0000

    xfs: remove wrapper for the fsync file operation
    
    Currently the fsync file operation is divided into a low-level
    routine doing all the work and one that implements the Linux file
    operation and does minimal argument wrapping.  This is a leftover
    from the days of the vnode operations layer and can be removed to
    simplify the code a bit, as well as preparing for the implementation
    of an optimized fdatasync which needs to look at the Linux inode
    state.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 00258e36b2d33b1b5cef7b489e06c5e0a9df58b5
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Feb 15 09:44:47 2010 +0000

    xfs: remove wrappers for read/write file operations
    
    Currently the aio_read, aio_write, splice_read and splice_write file
    operations are divided into a low-level routine doing all the work
    and one that implements the Linux file operations and does minimal
    argument wrapping.  This is a leftover from the days of the vnode
    operations layer and can be removed to simplify the code a lot.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit dda35b8f84d209784041bbad47f9e195a08a7527
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Mon Feb 15 09:44:46 2010 +0000

    xfs: merge xfs_lrw.c into xfs_file.c
    
    Currently the code to implement the file operations is split over
    two small files.  Merge the content of xfs_lrw.c into xfs_file.c to
    have it in one place.  Note that I haven't done various cleanups
    that are possible after this yet, they will follow in the next
    patch.  Also the function xfs_dev_is_read_only which was in
    xfs_lrw.c before really doesn't fit in here at all and was moved to
    xfs_mount.c.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit b262e5dfd9ddd2f6d0ef3fa53eb88690f22134a5
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Sun Feb 14 22:01:45 2010 +0000

    xfs: fix dquota trace format
    
    The be32_to_cpu in the TP_printk output breaks automatic parsing of
    the trace format by the trace-cmd tools, so we have to move it into
    the TP_assign block.  While we're at it also fix the format for the
    quota limits to more regular and easier parseable.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit a9cc799eca0c798ab5dd8648564fc2025bdd9bd2
Author: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date:   Wed Feb 3 17:50:13 2010 +0000

    xfs: increase readdir buffer size
    
    While doing some testing of readdir perf a while back,
    I noticed that the buffer size we're using internally is
    smaller than what glibc gives us by default.  Upping this
    size helped a bit, and seems safe.
    
    glibc's __alloc_dir() does:
    
      const size_t default_allocation = (4 * BUFSIZ < sizeof (struct dirent64)
                                         ? sizeof (struct dirent64) : 4 * 
BUFSIZ);
      const size_t small_allocation = (BUFSIZ < sizeof (struct dirent64)
                                       ? sizeof (struct dirent64) : BUFSIZ);
      size_t allocation = default_allocation;
    #ifdef _STATBUF_ST_BLKSIZE
      if (statp != NULL && default_allocation < statp->st_blksize)
        allocation = statp->st_blksize;
    #endif
    
    and
    
    #define _G_BUFSIZ 8192
    #define _IO_BUFSIZ _G_BUFSIZ
    # define BUFSIZ _IO_BUFSIZ
    
    so the default buffer is 4 * 8192 = 32768
    (except in the unlikely case of blocks > 32k....)
    
    Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

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

Summary of changes:
 fs/xfs/Makefile              |    1 -
 fs/xfs/linux-2.6/xfs_aops.c  |   97 +++--
 fs/xfs/linux-2.6/xfs_file.c  |  854 +++++++++++++++++++++++++++++++++++++++---
 fs/xfs/linux-2.6/xfs_iops.c  |   10 +
 fs/xfs/linux-2.6/xfs_linux.h |    1 -
 fs/xfs/linux-2.6/xfs_lrw.c   |  796 ---------------------------------------
 fs/xfs/linux-2.6/xfs_lrw.h   |   29 --
 fs/xfs/linux-2.6/xfs_sync.c  |    4 +-
 fs/xfs/linux-2.6/xfs_trace.c |   16 -
 fs/xfs/linux-2.6/xfs_trace.h |   22 +-
 fs/xfs/xfs_bmap.c            |  220 ++++++-----
 fs/xfs/xfs_iget.c            |   19 +-
 fs/xfs/xfs_inode.c           |   68 +---
 fs/xfs/xfs_inode.h           |    3 +-
 fs/xfs/xfs_inode_item.c      |   18 +-
 fs/xfs/xfs_log.c             |  106 +++---
 fs/xfs/xfs_log.h             |   16 +-
 fs/xfs/xfs_mount.c           |   20 +
 fs/xfs/xfs_mount.h           |    2 +
 fs/xfs/xfs_trans.c           |    2 +-
 fs/xfs/xfs_trans.h           |    2 +-
 fs/xfs/xfs_trans_buf.c       |  216 ++++--------
 fs/xfs/xfs_vnodeops.c        |  107 ------
 fs/xfs/xfs_vnodeops.h        |   15 +-
 24 files changed, 1194 insertions(+), 1450 deletions(-)
 delete mode 100644 fs/xfs/linux-2.6/xfs_lrw.c
 delete mode 100644 fs/xfs/linux-2.6/xfs_lrw.h


hooks/post-receive
-- 
XFS development tree

<Prev in Thread] Current Thread [Next in Thread>
  • [XFS updates] XFS development tree branch, master, updated. v2.6.33-69-gf1f724e, xfs <=