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 -
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 -
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:31208aSigned-off-by: Barry Naujok
Signed-off-by: Christoph Hellwig
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:31033aSigned-off-by: David Chinner
Signed-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy
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 -
SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30913aSigned-off-by: Barry Naujok
Signed-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy -
->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:30903aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy -
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:30897aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy
18 Apr, 2008
6 commits
-
SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30804aSigned-off-by: Barry Naujok
Signed-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy -
SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30550aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy -
SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30548aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy -
SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30547aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy -
SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30546aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy -
We can just use xfs_ilock/xfs_iunlock instead and get rid of the ugly
bhv_vrwlock_t.SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30533aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy
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:30370aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy -
- 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:30258aSigned-off-by: Christoph Hellwig
Signed-off-by: Vlad Apostolov
Signed-off-by: Lachlan McIlroy
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:29651aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy
Signed-off-by: Tim Shimmin
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:29794aSigned-off-by: Christoph Hellwig
Signed-off-by: Lachlan McIlroy
Signed-off-by: Tim Shimmin
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:29492aSigned-off-by: Christoph Hellwig
Signed-off-by: David Chinner
Signed-off-by: Tim Shimmin