|
@@ -269,17 +269,17 @@ next:
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-static int autofs4_mount_wait(struct dentry *dentry, bool rcu_walk)
|
|
|
+static int autofs4_mount_wait(const struct path *path, bool rcu_walk)
|
|
|
{
|
|
|
- struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb);
|
|
|
- struct autofs_info *ino = autofs4_dentry_ino(dentry);
|
|
|
+ struct autofs_sb_info *sbi = autofs4_sbi(path->dentry->d_sb);
|
|
|
+ struct autofs_info *ino = autofs4_dentry_ino(path->dentry);
|
|
|
int status = 0;
|
|
|
|
|
|
if (ino->flags & AUTOFS_INF_PENDING) {
|
|
|
if (rcu_walk)
|
|
|
return -ECHILD;
|
|
|
- pr_debug("waiting for mount name=%pd\n", dentry);
|
|
|
- status = autofs4_wait(sbi, dentry, NFY_MOUNT);
|
|
|
+ pr_debug("waiting for mount name=%pd\n", path->dentry);
|
|
|
+ status = autofs4_wait(sbi, path, NFY_MOUNT);
|
|
|
pr_debug("mount wait done status=%d\n", status);
|
|
|
}
|
|
|
ino->last_used = jiffies;
|
|
@@ -364,7 +364,7 @@ static struct vfsmount *autofs4_d_automount(struct path *path)
|
|
|
spin_lock(&sbi->fs_lock);
|
|
|
if (ino->flags & AUTOFS_INF_PENDING) {
|
|
|
spin_unlock(&sbi->fs_lock);
|
|
|
- status = autofs4_mount_wait(dentry, 0);
|
|
|
+ status = autofs4_mount_wait(path, 0);
|
|
|
if (status)
|
|
|
return ERR_PTR(status);
|
|
|
goto done;
|
|
@@ -405,7 +405,7 @@ static struct vfsmount *autofs4_d_automount(struct path *path)
|
|
|
}
|
|
|
ino->flags |= AUTOFS_INF_PENDING;
|
|
|
spin_unlock(&sbi->fs_lock);
|
|
|
- status = autofs4_mount_wait(dentry, 0);
|
|
|
+ status = autofs4_mount_wait(path, 0);
|
|
|
spin_lock(&sbi->fs_lock);
|
|
|
ino->flags &= ~AUTOFS_INF_PENDING;
|
|
|
if (status) {
|
|
@@ -447,7 +447,7 @@ static int autofs4_d_manage(const struct path *path, bool rcu_walk)
|
|
|
* This dentry may be under construction so wait on mount
|
|
|
* completion.
|
|
|
*/
|
|
|
- status = autofs4_mount_wait(dentry, rcu_walk);
|
|
|
+ status = autofs4_mount_wait(path, rcu_walk);
|
|
|
if (status)
|
|
|
return status;
|
|
|
|