Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 280141
b: refs/heads/master
c: bad0dcf
h: refs/heads/master
i:
  280139: b081711
v: v3
  • Loading branch information
Al Viro committed Jan 4, 2012
1 parent 018f8d2 commit a99062f
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a561be7100cd610bd2e082f3211c1dfb45835817
refs/heads/master: bad0dcffc21d17a07dbb83a2bf764f35a57feba5
4 changes: 2 additions & 2 deletions trunk/fs/nfsd/nfs4proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -838,7 +838,7 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
return status;
}
}
status = mnt_want_write(cstate->current_fh.fh_export->ex_path.mnt);
status = fh_want_write(&cstate->current_fh);
if (status)
return status;
status = nfs_ok;
Expand All @@ -856,7 +856,7 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
status = nfsd_setattr(rqstp, &cstate->current_fh, &setattr->sa_iattr,
0, (time_t)0);
out:
mnt_drop_write(cstate->current_fh.fh_export->ex_path.mnt);
fh_drop_write(&cstate->current_fh);
return status;
}

Expand Down
34 changes: 17 additions & 17 deletions trunk/fs/nfsd/vfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1300,7 +1300,7 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
goto out;
}

host_err = mnt_want_write(fhp->fh_export->ex_path.mnt);
host_err = fh_want_write(fhp);
if (host_err)
goto out_nfserr;

Expand All @@ -1325,7 +1325,7 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
break;
}
if (host_err < 0) {
mnt_drop_write(fhp->fh_export->ex_path.mnt);
fh_drop_write(fhp);
goto out_nfserr;
}

Expand All @@ -1339,7 +1339,7 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
err2 = nfserrno(commit_metadata(fhp));
if (err2)
err = err2;
mnt_drop_write(fhp->fh_export->ex_path.mnt);
fh_drop_write(fhp);
/*
* Update the file handle to get the new inode info.
*/
Expand Down Expand Up @@ -1430,7 +1430,7 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
v_atime = verifier[1]&0x7fffffff;
}

host_err = mnt_want_write(fhp->fh_export->ex_path.mnt);
host_err = fh_want_write(fhp);
if (host_err)
goto out_nfserr;
if (dchild->d_inode) {
Expand Down Expand Up @@ -1469,13 +1469,13 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
case NFS3_CREATE_GUARDED:
err = nfserr_exist;
}
mnt_drop_write(fhp->fh_export->ex_path.mnt);
fh_drop_write(fhp);
goto out;
}

host_err = vfs_create(dirp, dchild, iap->ia_mode, NULL);
if (host_err < 0) {
mnt_drop_write(fhp->fh_export->ex_path.mnt);
fh_drop_write(fhp);
goto out_nfserr;
}
if (created)
Expand Down Expand Up @@ -1503,7 +1503,7 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
if (!err)
err = nfserrno(commit_metadata(fhp));

mnt_drop_write(fhp->fh_export->ex_path.mnt);
fh_drop_write(fhp);
/*
* Update the filehandle to get the new inode info.
*/
Expand Down Expand Up @@ -1600,7 +1600,7 @@ nfsd_symlink(struct svc_rqst *rqstp, struct svc_fh *fhp,
if (IS_ERR(dnew))
goto out_nfserr;

host_err = mnt_want_write(fhp->fh_export->ex_path.mnt);
host_err = fh_want_write(fhp);
if (host_err)
goto out_nfserr;

Expand All @@ -1621,7 +1621,7 @@ nfsd_symlink(struct svc_rqst *rqstp, struct svc_fh *fhp,
err = nfserrno(commit_metadata(fhp));
fh_unlock(fhp);

mnt_drop_write(fhp->fh_export->ex_path.mnt);
fh_drop_write(fhp);

cerr = fh_compose(resfhp, fhp->fh_export, dnew, fhp);
dput(dnew);
Expand Down Expand Up @@ -1674,7 +1674,7 @@ nfsd_link(struct svc_rqst *rqstp, struct svc_fh *ffhp,

dold = tfhp->fh_dentry;

host_err = mnt_want_write(tfhp->fh_export->ex_path.mnt);
host_err = fh_want_write(tfhp);
if (host_err) {
err = nfserrno(host_err);
goto out_dput;
Expand All @@ -1699,7 +1699,7 @@ nfsd_link(struct svc_rqst *rqstp, struct svc_fh *ffhp,
err = nfserrno(host_err);
}
out_drop_write:
mnt_drop_write(tfhp->fh_export->ex_path.mnt);
fh_drop_write(tfhp);
out_dput:
dput(dnew);
out_unlock:
Expand Down Expand Up @@ -1776,7 +1776,7 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen,
host_err = -EXDEV;
if (ffhp->fh_export->ex_path.mnt != tfhp->fh_export->ex_path.mnt)
goto out_dput_new;
host_err = mnt_want_write(ffhp->fh_export->ex_path.mnt);
host_err = fh_want_write(ffhp);
if (host_err)
goto out_dput_new;

Expand All @@ -1795,7 +1795,7 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen,
host_err = commit_metadata(ffhp);
}
out_drop_write:
mnt_drop_write(ffhp->fh_export->ex_path.mnt);
fh_drop_write(ffhp);
out_dput_new:
dput(ndentry);
out_dput_old:
Expand Down Expand Up @@ -1854,7 +1854,7 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
if (!type)
type = rdentry->d_inode->i_mode & S_IFMT;

host_err = mnt_want_write(fhp->fh_export->ex_path.mnt);
host_err = fh_want_write(fhp);
if (host_err)
goto out_put;

Expand All @@ -1868,7 +1868,7 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
if (!host_err)
host_err = commit_metadata(fhp);
out_drop_write:
mnt_drop_write(fhp->fh_export->ex_path.mnt);
fh_drop_write(fhp);
out_put:
dput(rdentry);

Expand Down Expand Up @@ -2270,7 +2270,7 @@ nfsd_set_posix_acl(struct svc_fh *fhp, int type, struct posix_acl *acl)
} else
size = 0;

error = mnt_want_write(fhp->fh_export->ex_path.mnt);
error = fh_want_write(fhp);
if (error)
goto getout;
if (size)
Expand All @@ -2284,7 +2284,7 @@ nfsd_set_posix_acl(struct svc_fh *fhp, int type, struct posix_acl *acl)
error = 0;
}
}
mnt_drop_write(fhp->fh_export->ex_path.mnt);
fh_drop_write(fhp);

getout:
kfree(value);
Expand Down
10 changes: 10 additions & 0 deletions trunk/fs/nfsd/vfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,14 @@ struct posix_acl *nfsd_get_posix_acl(struct svc_fh *, int);
int nfsd_set_posix_acl(struct svc_fh *, int, struct posix_acl *);
#endif

static inline int fh_want_write(struct svc_fh *fh)
{
return mnt_want_write(fh->fh_export->ex_path.mnt);
}

static inline void fh_drop_write(struct svc_fh *fh)
{
mnt_drop_write(fh->fh_export->ex_path.mnt);
}

#endif /* LINUX_NFSD_VFS_H */

0 comments on commit a99062f

Please sign in to comment.