[XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-20851-g4be4a00

xfs at oss.sgi.com xfs at oss.sgi.com
Wed Apr 29 10:01:01 CDT 2009


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
  4be4a00 xfs: a couple getbmap cleanups
  2ac00af xfs: add more checks to superblock validation
  f25181f xfs_file_last_byte() needs to acquire ilock
      from  8de2bf937a6bea8f0f775fd5399ba20c1a0c3d77 (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 4be4a00fb55879ef44b5914c189aecffa828deb4
Author: Christoph Hellwig <hch at infradead.org>
Date:   Wed Apr 29 10:50:48 2009 -0400

    xfs: a couple getbmap cleanups
    
     - reshuffle various conditionals for data vs attr fork to make the code
       more readable
     - do fine-grainded goto-based error handling
     - exit early from conditionals instead of keeping a long else branch around
     - allow kmem_alloc to fail
    
    Signed-off-by: Christoph Hellwig <hch at lst.de>
    Reviewed-by: Eric Sandeen <sandeen at sandeen.net>
    Reviewed-by: Felix Blyakher <felixb at sgi.com>
    Signed-off-by: Felix Blyakher <felixb at sgi.com>

commit 2ac00af7a6d2e65013e6f28bd1f37c0cd98ba134
Author: Olaf Weber <olaf at sgi.com>
Date:   Fri Apr 17 16:12:45 2009 -0500

    xfs: add more checks to superblock validation
    
    There had been reports where xfs filesystem was randomly
    corrupted with fsfuzzer, and xfs failed to handle it
    gracefully. This patch fixes couple of reported problem
    by providing additional checks in the superblock
    validation routine.
    
    Signed-off-by: Olaf Weber <olaf at sgi.com>
    Reviewed-by: Josef 'Jeff' Sipek <jeffpc at josefsipek.net>
    Reviewed-by: Christoph Hellwig <hch at lst.de>
    Signed-off-by: Felix Blyakher <felixb at sgi.com>

commit f25181f598cf4a8ccc40a51d8b74f8b555ecddee
Author: Lachlan McIlroy <lmcilroy at redhat.com>
Date:   Thu Apr 23 22:18:00 2009 -0400

    xfs_file_last_byte() needs to acquire ilock
    
    We had some systems crash with this stack:
    
    [<a00000010000cb20>] ia64_leave_kernel+0x0/0x280
    [<a00000021291ca00>] xfs_bmbt_get_startoff+0x0/0x20 [xfs]
    [<a0000002129080b0>] xfs_bmap_last_offset+0x210/0x280 [xfs]
    [<a00000021295b010>] xfs_file_last_byte+0x70/0x1a0 [xfs]
    [<a00000021295b200>] xfs_itruncate_start+0xc0/0x1a0 [xfs]
    [<a0000002129935f0>] xfs_inactive_free_eofblocks+0x290/0x460 [xfs]
    [<a000000212998fb0>] xfs_release+0x1b0/0x240 [xfs]
    [<a0000002129ad930>] xfs_file_release+0x70/0xa0 [xfs]
    [<a000000100162ea0>] __fput+0x1a0/0x420
    [<a000000100163160>] fput+0x40/0x60
    
    The problem here is that xfs_file_last_byte() does not acquire the
    inode lock and can therefore race with another thread that is modifying
    the extext list.  While xfs_bmap_last_offset() is trying to lookup
    what was the last extent some extents were merged and the extent list
    shrunk so the index we lookup is now beyond the end of the extent list
    and potentially in a freed buffer.
    
    Signed-off-by: Lachlan McIlroy <lmcilroy at redhat.com>
    Reviewed-by: Christoph Hellwig <hch at lst.de>
    Reviewed-by: Felix Blyakher <felixb at sgi.com>
    Signed-off-by: Felix Blyakher <felixb at sgi.com>

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

Summary of changes:
 fs/xfs/xfs_bmap.c  |  162 +++++++++++++++++++++++++--------------------------
 fs/xfs/xfs_inode.c |    2 +
 fs/xfs/xfs_mount.c |    3 +
 3 files changed, 84 insertions(+), 83 deletions(-)


hooks/post-receive
-- 
XFS development tree




More information about the xfs mailing list