xfs
[Top] [All Lists]

[XFS updates] XFS development tree branch, for-linus, updated. v2.6.38-1

To: xfs@xxxxxxxxxxx
Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.38-18962-g4a33821
From: xfs@xxxxxxxxxxx
Date: Fri, 24 Jun 2011 12:37:54 -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, for-linus has been updated
  4a33821 xfs: prevent bogus assert when trying to remove non-existent attribute
  df4368a xfs: clear XFS_IDIRTY_RELEASE on truncate down
  778e24b xfs: reset inode per-lifetime state when recycling it
      from  a27a263bae072a499acc77b632238a6dacccf888 (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 4a33821236f2ef3af0081e8a5eec1301cbed3125
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Thu Jun 23 01:35:01 2011 +0000

    xfs: prevent bogus assert when trying to remove non-existent attribute
    
    If the attribute fork on an inode is in btree format and has
    multiple levels (i.e node format rather than leaf format), then a
    lookup failure will trigger an assert failure in xfs_da_path_shift
    if the flag XFS_DA_OP_OKNOENT is not set. This flag is used to
    indicate to the directory btree code that not finding an entry is
    not a fatal error. In the case of doing a lookup for a directory
    name removal, this is valid as a user cannot insert an arbitrary
    name to remove from the directory btree.
    
    However, in the case of the attribute tree, a user has direct
    control over the attribute name and can ask for any random name to
    be removed without any validation. In this case, fsstress is asking
    for a non-existent user.selinux attribute to be removed, and that is
    causing xfs_da_path_shift() to fall off the bottom of the tree where
    it asserts that a lookup failure is allowed. Because the flag is not
    set, we die a horrible death on a debug enable kernel.
    
    Prevent this assert from firing on attribute removes by adding the
    op_flag XFS_DA_OP_OKNOENT to atribute removal operations.
    
    Discovered when testing on a SELinux enabled system by fsstress in
    test 070 by trying to remove a non-existent user.selinux attribute.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit df4368a146d2b350b8398babfe11e2088f741d67
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Thu Jun 23 01:35:00 2011 +0000

    xfs: clear XFS_IDIRTY_RELEASE on truncate down
    
    When an inode is truncated down, speculative preallocation is
    removed from the inode. This should also reset the state bits for
    controlling whether preallocation is subsequently removed when the
    file is next closed. The flag is not being cleared, so repeated
    operations on a file that first involve a truncate (e.g. multiple
    repeated dd invocations on a file) give different file layouts for
    the second and subsequent invocations.
    
    Fix this by clearing the XFS_IDIRTY_RELEASE state bit when the
    XFS_ITRUNCATED bit is detected in xfs_release() and hence ensure
    that speculative delalloc is removed on files that have been
    truncated down.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 778e24bb6dd8682318bb496d4bfdc32b501a6420
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Thu Jun 23 01:34:59 2011 +0000

    xfs: reset inode per-lifetime state when recycling it
    
    XFS inodes has several per-lifetime state fields that determine the
    behaviour of the inode. These state fields are not all reset when an
    inode is reused from the reclaimable state.
    
    This can lead to unexpected behaviour of the new inode such as
    speculative preallocation not being truncated away in the expected
    manner for local files until the inode is subsequently truncated,
    freed or cycles out of the cache. It can also lead to an inode being
    considered to be a filestream inode or having been truncated when
    that is not the case.
    
    Rework the reinitialisation of the inode when it is recycled to
    ensure that it is pristine before it is reused. While there, also
    fix the resetting of state flags in the recycling error paths so the
    inode does not become unreclaimable.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

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

Summary of changes:
 fs/xfs/xfs_attr.c     |    7 +++++++
 fs/xfs/xfs_iget.c     |   13 +++++++++----
 fs/xfs/xfs_inode.h    |   10 ++++++++++
 fs/xfs/xfs_vnodeops.c |    7 +++++--
 4 files changed, 31 insertions(+), 6 deletions(-)


hooks/post-receive
-- 
XFS development tree

<Prev in Thread] Current Thread [Next in Thread>
  • [XFS updates] XFS development tree branch, for-linus, updated. v2.6.38-18962-g4a33821, xfs <=