28 Jul, 2008

3 commits

  • it can be switched to take struct iattr directly and thus simplify the
    implementation greatly. Also rename the ATTR_ flags to XFS_ATTR_ to not
    conflict with the ATTR_ flags used by the VFS.

    SGI-PV: 984565

    SGI-Modid: xfs-linux-melb:xfs-kern:31678a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Tim Shimmin
    Signed-off-by: Lachlan McIlroy

    Christoph Hellwig
     
  • xfs_remove and xfs_rmdir are almost the same with a little more work
    performed in xfs_rmdir due to the . and .. entries. This patch merges
    xfs_rmdir into xfs_remove and performs these actions conditionally.

    Also clean up the error handling which was a nightmare in both versions
    before.

    SGI-PV: 981498

    SGI-Modid: xfs-linux-melb:xfs-kern:31335a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Barry Naujok
    Signed-off-by: Lachlan McIlroy

    Christoph Hellwig
     
  • This implements the code to store the actual filename found during a
    lookup in the dentry cache and to avoid multiple entries in the dcache
    pointing to the same inode.

    To avoid polluting the dcache, we implement a new directory inode
    operations for lookup. xfs_vn_ci_lookup() stores the correct case name in
    the dcache.

    The "actual name" is only allocated and returned for a case- insensitive
    match and not an actual match.

    Another unusual interaction with the dcache is not storing negative
    dentries like other filesystems doing a d_add(dentry, NULL) when an ENOENT
    is returned. During the VFS lookup, if a dentry returned has no inode,
    dput is called and ENOENT is returned. By not doing a d_add, this actually
    removes it completely from the dcache to be reused. create/rename have to
    be modified to support unhashed dentries being passed in.

    SGI-PV: 981521
    SGI-Modid: xfs-linux-melb:xfs-kern:31208a

    Signed-off-by: Barry Naujok
    Signed-off-by: Christoph Hellwig

    Barry Naujok
     

23 May, 2008

1 commit

  • xfs_fsync() fails to wait for data I/O completion before checking if the
    inode is dirty or clean to decide whether to log the inode or not. This
    misses inode size updates when the data flushed by the fsync() is
    extending the file.

    Hence, like fdatasync(), we need to wait for I/o completion first, then
    check the inode for cleanliness. Doing so makes the behaviour of
    xfs_fsync() identical for fsync and fdatasync and we *always* use
    synchronous semantics if the inode is dirty. Therefore also kill the
    differences and remove the unused flags from the xfs_fsync function and
    callers.

    SGI-PV: 981296
    SGI-Modid: xfs-linux-melb:xfs-kern:31033a

    Signed-off-by: David Chinner
    Signed-off-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy

    David Chinner
     

29 Apr, 2008

4 commits

  • Remove the last sendfile leftovers in mainline. This code is already
    gone in CVS.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy

    Christoph Hellwig
     
  • SGI-PV: 976035
    SGI-Modid: xfs-linux-melb:xfs-kern:30913a

    Signed-off-by: Barry Naujok
    Signed-off-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy

    Barry Naujok
     
  • ->rename already gets the target inode passed if it exits. Pass it down to
    xfs_rename so that we can avoid looking it up again. Also simplify locking
    as the first lock section in xfs_rename can go away now: the isdir is an
    invariant over the lifetime of the inode, and new_parent and the nlink
    check are namespace topology protected by i_mutex in the VFS. The projid
    check needs to move into the second lock section anyway to not be racy.

    Also kill the now unused xfs_dir_lookup_int and remove the now-unused
    first_locked argumet to xfs_lock_inodes.

    SGI-PV: 976035
    SGI-Modid: xfs-linux-melb:xfs-kern:30903a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy

    Christoph Hellwig
     
  • It's currently used by the ACL code to read di_mode/di_uid, but these are
    simple 32bit scalar values we can just read directly without locking.

    SGI-PV: 976035
    SGI-Modid: xfs-linux-melb:xfs-kern:30897a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy

    Christoph Hellwig
     

18 Apr, 2008

6 commits


07 Feb, 2008

2 commits

  • Now that all direct caller of xfs_iaccess are gone we can kill xfs_iaccess
    and xfs_access and just use generic_permission with a check_acl callback.
    This is required for the per-mount read-only patchset in -mm to work
    properly with XFS.

    SGI-PV: 971186
    SGI-Modid: xfs-linux-melb:xfs-kern:30370a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy

    Christoph Hellwig
     
  • - merge xfs_fid2 into it's only caller xfs_dm_inode_to_fh.
    - remove xfs_vget and opencode it in the two callers, simplifying
    both of them by avoiding the awkward calling convetion.
    - assign directly to the dm_fid_t members in various places in the
    dmapi code instead of casting them to xfs_fid_t first (which
    is identical to dm_fid_t)

    SGI-PV: 974747
    SGI-Modid: xfs-linux-melb:xfs-kern:30258a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Vlad Apostolov
    Signed-off-by: Lachlan McIlroy

    Christoph Hellwig
     

19 Oct, 2007

1 commit

  • Currently XFs has three different fid types: struct fid, struct xfs_fid
    and struct xfs_fid2 with hte latter two beeing identicaly and the first
    one beeing the same size but an unstructured array with the same size.

    This patch consolidates all this to alway uuse struct xfs_fid.

    This patch is required for an upcoming patch series from me that revamps
    the nfs exporting code and introduces a Linux-wide struct fid.

    SGI-PV: 970336
    SGI-Modid: xfs-linux-melb:xfs-kern:29651a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy
    Signed-off-by: Tim Shimmin

    Christoph Hellwig
     

16 Oct, 2007

1 commit

  • Simplify the prototype for xfs_create/xfs_mkdir/xfs_symlink by not passing
    down a bhv_vattr_t that just hogs stack space. Instead pass down the mode
    in a mode_t and in case of xfs_create the rdev as a scalar type as well.

    SGI-PV: 968563
    SGI-Modid: xfs-linux-melb:xfs-kern:29794a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy
    Signed-off-by: Tim Shimmin

    Christoph Hellwig
     

15 Oct, 2007

1 commit

  • All vnode ops now take struct xfs_inode pointers and the behaviour related
    glue is split out into methods of it's own. This required fixing
    xfs_create/mkdir/symlink to not mess with the inode pointer but rather use
    a separate boolean for error handling. Thanks to Dave Chinner for that
    fix.

    SGI-PV: 969608
    SGI-Modid: xfs-linux-melb:xfs-kern:29492a

    Signed-off-by: Christoph Hellwig
    Signed-off-by: David Chinner
    Signed-off-by: Tim Shimmin

    Christoph Hellwig