mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[XFS] remove manual lookup from xfs_rename and simplify locking
->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 <hch@infradead.org> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:
parent
579aa9caf5
commit
cfa853e47d
8 changed files with 62 additions and 207 deletions
|
@ -1982,7 +1982,7 @@ again:
|
|||
|
||||
ips[0] = ip;
|
||||
ips[1] = dp;
|
||||
xfs_lock_inodes(ips, 2, 0, XFS_ILOCK_EXCL);
|
||||
xfs_lock_inodes(ips, 2, XFS_ILOCK_EXCL);
|
||||
}
|
||||
/* else e_inum == dp->i_ino */
|
||||
/* This can happen if we're asked to lock /x/..
|
||||
|
@ -2030,7 +2030,6 @@ void
|
|||
xfs_lock_inodes(
|
||||
xfs_inode_t **ips,
|
||||
int inodes,
|
||||
int first_locked,
|
||||
uint lock_mode)
|
||||
{
|
||||
int attempts = 0, i, j, try_lock;
|
||||
|
@ -2038,13 +2037,8 @@ xfs_lock_inodes(
|
|||
|
||||
ASSERT(ips && (inodes >= 2)); /* we need at least two */
|
||||
|
||||
if (first_locked) {
|
||||
try_lock = 1;
|
||||
i = 1;
|
||||
} else {
|
||||
try_lock = 0;
|
||||
i = 0;
|
||||
}
|
||||
try_lock = 0;
|
||||
i = 0;
|
||||
|
||||
again:
|
||||
for (; i < inodes; i++) {
|
||||
|
@ -2406,7 +2400,7 @@ xfs_link(
|
|||
ips[1] = sip;
|
||||
}
|
||||
|
||||
xfs_lock_inodes(ips, 2, 0, XFS_ILOCK_EXCL);
|
||||
xfs_lock_inodes(ips, 2, XFS_ILOCK_EXCL);
|
||||
|
||||
/*
|
||||
* Increment vnode ref counts since xfs_trans_commit &
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue