exportfs: use dget_parent
Use dget_parent instead of opencoding it. This simplifies the code, but more importanly prepares for the more complicated locking for a parent dget in the dcache scale patch series. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
committed by
Al Viro
parent
3825bdb7ed
commit
0461ee2616
@@ -74,21 +74,20 @@ static struct dentry *
|
|||||||
find_disconnected_root(struct dentry *dentry)
|
find_disconnected_root(struct dentry *dentry)
|
||||||
{
|
{
|
||||||
dget(dentry);
|
dget(dentry);
|
||||||
spin_lock(&dentry->d_lock);
|
while (!IS_ROOT(dentry)) {
|
||||||
while (!IS_ROOT(dentry) &&
|
struct dentry *parent = dget_parent(dentry);
|
||||||
(dentry->d_parent->d_flags & DCACHE_DISCONNECTED)) {
|
|
||||||
struct dentry *parent = dentry->d_parent;
|
if (!(parent->d_flags & DCACHE_DISCONNECTED)) {
|
||||||
dget(parent);
|
dput(parent);
|
||||||
spin_unlock(&dentry->d_lock);
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
dput(dentry);
|
dput(dentry);
|
||||||
dentry = parent;
|
dentry = parent;
|
||||||
spin_lock(&dentry->d_lock);
|
|
||||||
}
|
}
|
||||||
spin_unlock(&dentry->d_lock);
|
|
||||||
return dentry;
|
return dentry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure target_dir is fully connected to the dentry tree.
|
* Make sure target_dir is fully connected to the dentry tree.
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user