mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
switch follow_up() to struct path
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
e64c390ca0
commit
bab77ebf51
4 changed files with 11 additions and 11 deletions
|
@ -212,7 +212,7 @@ static int find_autofs_mount(const char *pathname,
|
|||
err = 0;
|
||||
}
|
||||
}
|
||||
if (!follow_up(&path.mnt, &path.dentry))
|
||||
if (!follow_up(&path))
|
||||
break;
|
||||
}
|
||||
path_put(&path);
|
||||
|
|
16
fs/namei.c
16
fs/namei.c
|
@ -675,23 +675,23 @@ static inline int do_follow_link(struct path *path, struct nameidata *nd)
|
|||
return err;
|
||||
}
|
||||
|
||||
int follow_up(struct vfsmount **mnt, struct dentry **dentry)
|
||||
int follow_up(struct path *path)
|
||||
{
|
||||
struct vfsmount *parent;
|
||||
struct dentry *mountpoint;
|
||||
spin_lock(&vfsmount_lock);
|
||||
parent=(*mnt)->mnt_parent;
|
||||
if (parent == *mnt) {
|
||||
parent = path->mnt->mnt_parent;
|
||||
if (parent == path->mnt) {
|
||||
spin_unlock(&vfsmount_lock);
|
||||
return 0;
|
||||
}
|
||||
mntget(parent);
|
||||
mountpoint=dget((*mnt)->mnt_mountpoint);
|
||||
mountpoint = dget(path->mnt->mnt_mountpoint);
|
||||
spin_unlock(&vfsmount_lock);
|
||||
dput(*dentry);
|
||||
*dentry = mountpoint;
|
||||
mntput(*mnt);
|
||||
*mnt = parent;
|
||||
dput(path->dentry);
|
||||
path->dentry = mountpoint;
|
||||
mntput(path->mnt);
|
||||
path->mnt = parent;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -173,7 +173,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
|||
.dentry = dget(dparent)};
|
||||
|
||||
while (path.dentry == path.mnt->mnt_root &&
|
||||
follow_up(&path.mnt, &path.dentry))
|
||||
follow_up(&path))
|
||||
;
|
||||
dp = dget_parent(path.dentry);
|
||||
dput(path.dentry);
|
||||
|
|
|
@ -79,7 +79,7 @@ extern struct dentry *lookup_one_len(const char *, struct dentry *, int);
|
|||
extern struct dentry *lookup_one_noperm(const char *, struct dentry *);
|
||||
|
||||
extern int follow_down(struct vfsmount **, struct dentry **);
|
||||
extern int follow_up(struct vfsmount **, struct dentry **);
|
||||
extern int follow_up(struct path *);
|
||||
|
||||
extern struct dentry *lock_rename(struct dentry *, struct dentry *);
|
||||
extern void unlock_rename(struct dentry *, struct dentry *);
|
||||
|
|
Loading…
Reference in a new issue