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-12977-gd080070
From: xfs@xxxxxxxxxxx
Date: Thu, 8 Oct 2009 13:29:27 -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
  d080070 xfs: stop calling filemap_fdatawait inside ->fsync
  8e69ce1 fix readahead calculations in xfs_dir2_leaf_getdents()
  dce5065 xfs: make sure xfs_sync_fsdata covers the log
  932640e xfs: mark inodes dirty before issuing I/O
  69961a2 xfs: cleanup ->sync_fs
  c90b07e xfs: fix xfs_quiesce_data
  f9581b1 xfs: implement ->dirty_inode to fix timestamp handling
      from  9ef96da6ec5e1b4cf7eb8e30852cd88ec7d5fdc0 (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 d0800703febc04827b8fa91921aa4e254d01e8d1
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Sat Sep 26 19:55:04 2009 +0000

    xfs: stop calling filemap_fdatawait inside ->fsync
    
    Now that the VFS actually waits for the data I/O to complete before
    calling into ->fsync we can stop doing it ourselves.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 8e69ce147127a0235e8d1f2b75ea214be78c61b3
Author: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date:   Fri Sep 25 19:42:26 2009 +0000

    fix readahead calculations in xfs_dir2_leaf_getdents()
    
    This is for bug #850,
    http://oss.sgi.com/bugzilla/show_bug.cgi?id=850
    XFS file system segfaults , repeatedly and 100% reproducable in 2.6.30 , 
2.6.31
    
    The above only showed up on a CONFIG_XFS_DEBUG=y kernel, because
    xfs_bmapi() ASSERTs that it has been asked for at least one map,
    
    and it was getting 0.
    
    The root cause is that our guesstimated "bufsize" from xfs_file_readdir
    was fairly small, and the
    
                bufsize -= length;
    
    in the loop was going negative - except bufsize is a size_t, so it
    was wrapping to a very large number.
    
    Then when we did
                ra_want = howmany(bufsize + mp->m_dirblksize,
                                  mp->m_sb.sb_blocksize) - 1;
    
    with that very large number, the (int) ra_want was coming out
    negative, and a subsequent compare:
    
                if (1 + ra_want > map_blocks ...
    
    was coming out -true- (negative int compare w/ uint) and we went
    back to xfs_bmapi() for more, even though we did not need more,
    and asked for 0 maps, and hit the ASSERT.
    
    We have kind of a type mess here, but just keeping bufsize from
    going negative is probably sufficient to avoid the problem.
    
    Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit dce5065a57c158e0ca5db8e63c50118b2ecf4ac5
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Oct 6 20:29:30 2009 +0000

    xfs: make sure xfs_sync_fsdata covers the log
    
    We want to always cover the log after writing out the superblock, and
    in case of a synchronous writeout make sure we actually wait for the
    log to be covered.  That way a filesystem that has been sync()ed can
    be considered clean by log recovery.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 932640e8adaff3d0c28ee32d4863c7a7a74df055
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Oct 6 20:29:29 2009 +0000

    xfs: mark inodes dirty before issuing I/O
    
    To make sure they get properly waited on in sync when I/O is in flight and
    we latter need to update the inode size.  Requires a new helper to check if 
an
    ioend structure is beyond the current EOF.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 69961a26b82931601e07c9e3656bd90c598f2395
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Oct 6 20:29:28 2009 +0000

    xfs: cleanup ->sync_fs
    
    Sort out ->sync_fs to not perform a superblock writeback for the wait = 0 
case
    as that is just an optional first pass and the superblock will be written 
back
    properly in the next call with wait = 1.  Instead perform an opportunistic
    quota writeback to have less work later.  Also remove the freeze special 
case
    as we do a proper wait = 1 call in the freeze code anyway.
    
    Also rename the function to xfs_fs_sync_fs to match the normal naming
    convention, update comments and avoid calling into the laptop_mode logic on
    an error.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit c90b07e8dd9f263d2e2af1d9648ba269f4d0d8fd
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Oct 6 20:29:27 2009 +0000

    xfs: fix xfs_quiesce_data
    
    We need to do a synchronous xfs_sync_fsdata to make sure the superblock
    actually is on disk when we return.
    
    Also remove SYNC_BDFLUSH flag to xfs_sync_inodes because that particular
    flag is never checked.
    
    Move xfs_filestream_flush call later to only release inodes after they
    have been written out.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit f9581b1443abac50c90168301d40a7734b13a5dc
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Oct 6 20:29:26 2009 +0000

    xfs: implement ->dirty_inode to fix timestamp handling
    
    This is picking up on Felix's repost of Dave's patch to implement a
    .dirty_inode method.  We really need this notification because
    the VFS keeps writing directly into the inode structure instead
    of going through methods to update this state.  In addition to
    the long-known atime issue we now also have a caller in VM code
    that updates c/mtime that way for shared writeable mmaps.  And
    I found another one that no one has noticed in practice in the FIFO
    code.
    
    So implement ->dirty_inode to set i_update_core whenever the
    inode gets externally dirtied, and switch the c/mtime handling to
    the same scheme we already use for atime (always picking up
    the value from the Linux inode).
    
    Note that this patch also removes the xfs_synchronize_atime call
    in xfs_reclaim it was superflous as we already synchronize the time
    when writing the inode via the log (xfs_inode_item_format) or the
    normal buffers (xfs_iflush_int).
    
    In addition also remove the I_CLEAR check before copying the Linux
    timestamps - now that we always have the Linux inode available
    we can always use the timestamps in it.
    
    Also switch to just using file_update_time for regular reads/writes -
    that will get us all optimization done to it for free and make
    sure we notice early when it breaks.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Felix Blyakher <felixb@xxxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

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

Summary of changes:
 fs/xfs/linux-2.6/xfs_aops.c  |   38 ++++++++++++++++++++-------
 fs/xfs/linux-2.6/xfs_file.c  |    9 +-----
 fs/xfs/linux-2.6/xfs_iops.c  |   41 ++++++++++------------------
 fs/xfs/linux-2.6/xfs_lrw.c   |    2 +-
 fs/xfs/linux-2.6/xfs_super.c |   59 +++++++++++++++++++++++++++++-------------
 fs/xfs/linux-2.6/xfs_sync.c  |   36 ++++++++++++++++++-------
 fs/xfs/xfs_dfrag.c           |    8 +++---
 fs/xfs/xfs_dir2_leaf.c       |    4 ++-
 fs/xfs/xfs_inode.c           |    4 +-
 fs/xfs/xfs_inode.h           |    2 +-
 fs/xfs/xfs_inode_item.c      |   18 ++++++++-----
 fs/xfs/xfs_itable.c          |   21 +++++++++-----
 fs/xfs/xfs_vnodeops.c        |    6 ----
 13 files changed, 146 insertions(+), 102 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-12977-gd080070, xfs <=