switch vfs_getattr() to struct path
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Esse commit está contido em:
@@ -43,7 +43,6 @@ static __be32
|
||||
nfsd3_proc_getattr(struct svc_rqst *rqstp, struct nfsd_fhandle *argp,
|
||||
struct nfsd3_attrstat *resp)
|
||||
{
|
||||
int err;
|
||||
__be32 nfserr;
|
||||
|
||||
dprintk("nfsd: GETATTR(3) %s\n",
|
||||
@@ -55,9 +54,7 @@ nfsd3_proc_getattr(struct svc_rqst *rqstp, struct nfsd_fhandle *argp,
|
||||
if (nfserr)
|
||||
RETURN_STATUS(nfserr);
|
||||
|
||||
err = vfs_getattr(resp->fh.fh_export->ex_path.mnt,
|
||||
resp->fh.fh_dentry, &resp->stat);
|
||||
nfserr = nfserrno(err);
|
||||
nfserr = fh_getattr(&resp->fh, &resp->stat);
|
||||
|
||||
RETURN_STATUS(nfserr);
|
||||
}
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#include "xdr3.h"
|
||||
#include "auth.h"
|
||||
#include "netns.h"
|
||||
#include "vfs.h"
|
||||
|
||||
#define NFSDDBG_FACILITY NFSDDBG_XDR
|
||||
|
||||
@@ -204,10 +205,10 @@ encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp)
|
||||
{
|
||||
struct dentry *dentry = fhp->fh_dentry;
|
||||
if (dentry && dentry->d_inode) {
|
||||
int err;
|
||||
__be32 err;
|
||||
struct kstat stat;
|
||||
|
||||
err = vfs_getattr(fhp->fh_export->ex_path.mnt, dentry, &stat);
|
||||
err = fh_getattr(fhp, &stat);
|
||||
if (!err) {
|
||||
*p++ = xdr_one; /* attributes follow */
|
||||
lease_get_mtime(dentry->d_inode, &stat.mtime);
|
||||
@@ -254,13 +255,12 @@ encode_wcc_data(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp)
|
||||
*/
|
||||
void fill_post_wcc(struct svc_fh *fhp)
|
||||
{
|
||||
int err;
|
||||
__be32 err;
|
||||
|
||||
if (fhp->fh_post_saved)
|
||||
printk("nfsd: inode locked twice during operation.\n");
|
||||
|
||||
err = vfs_getattr(fhp->fh_export->ex_path.mnt, fhp->fh_dentry,
|
||||
&fhp->fh_post_attr);
|
||||
err = fh_getattr(fhp, &fhp->fh_post_attr);
|
||||
fhp->fh_post_change = fhp->fh_dentry->d_inode->i_version;
|
||||
if (err) {
|
||||
fhp->fh_post_saved = 0;
|
||||
|
@@ -1997,7 +1997,7 @@ static int get_parent_attributes(struct svc_export *exp, struct kstat *stat)
|
||||
if (path.dentry != path.mnt->mnt_root)
|
||||
break;
|
||||
}
|
||||
err = vfs_getattr(path.mnt, path.dentry, stat);
|
||||
err = vfs_getattr(&path, stat);
|
||||
path_put(&path);
|
||||
return err;
|
||||
}
|
||||
@@ -2050,7 +2050,7 @@ nfsd4_encode_fattr(struct svc_fh *fhp, struct svc_export *exp,
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = vfs_getattr(exp->ex_path.mnt, dentry, &stat);
|
||||
err = vfs_getattr(&path, &stat);
|
||||
if (err)
|
||||
goto out_nfserr;
|
||||
if ((bmval0 & (FATTR4_WORD0_FILES_FREE | FATTR4_WORD0_FILES_TOTAL |
|
||||
|
@@ -26,17 +26,13 @@ static __be32
|
||||
nfsd_return_attrs(__be32 err, struct nfsd_attrstat *resp)
|
||||
{
|
||||
if (err) return err;
|
||||
return nfserrno(vfs_getattr(resp->fh.fh_export->ex_path.mnt,
|
||||
resp->fh.fh_dentry,
|
||||
&resp->stat));
|
||||
return fh_getattr(&resp->fh, &resp->stat);
|
||||
}
|
||||
static __be32
|
||||
nfsd_return_dirop(__be32 err, struct nfsd_diropres *resp)
|
||||
{
|
||||
if (err) return err;
|
||||
return nfserrno(vfs_getattr(resp->fh.fh_export->ex_path.mnt,
|
||||
resp->fh.fh_dentry,
|
||||
&resp->stat));
|
||||
return fh_getattr(&resp->fh, &resp->stat);
|
||||
}
|
||||
/*
|
||||
* Get a file's attributes
|
||||
@@ -150,9 +146,7 @@ nfsd_proc_read(struct svc_rqst *rqstp, struct nfsd_readargs *argp,
|
||||
&resp->count);
|
||||
|
||||
if (nfserr) return nfserr;
|
||||
return nfserrno(vfs_getattr(resp->fh.fh_export->ex_path.mnt,
|
||||
resp->fh.fh_dentry,
|
||||
&resp->stat));
|
||||
return fh_getattr(&resp->fh, &resp->stat);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -4,6 +4,7 @@
|
||||
* Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
|
||||
*/
|
||||
|
||||
#include "vfs.h"
|
||||
#include "xdr.h"
|
||||
#include "auth.h"
|
||||
|
||||
@@ -197,7 +198,7 @@ encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp,
|
||||
__be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp)
|
||||
{
|
||||
struct kstat stat;
|
||||
vfs_getattr(fhp->fh_export->ex_path.mnt, fhp->fh_dentry, &stat);
|
||||
fh_getattr(fhp, &stat); /* BUG */
|
||||
return encode_fattr(rqstp, p, fhp, &stat);
|
||||
}
|
||||
|
||||
|
@@ -6,6 +6,7 @@
|
||||
#define LINUX_NFSD_VFS_H
|
||||
|
||||
#include "nfsfh.h"
|
||||
#include "nfsd.h"
|
||||
|
||||
/*
|
||||
* Flags for nfsd_permission
|
||||
@@ -125,4 +126,11 @@ static inline void fh_drop_write(struct svc_fh *fh)
|
||||
}
|
||||
}
|
||||
|
||||
static inline __be32 fh_getattr(struct svc_fh *fh, struct kstat *stat)
|
||||
{
|
||||
struct path p = {.mnt = fh->fh_export->ex_path.mnt,
|
||||
.dentry = fh->fh_dentry};
|
||||
return nfserrno(vfs_getattr(&p, stat));
|
||||
}
|
||||
|
||||
#endif /* LINUX_NFSD_VFS_H */
|
||||
|
Referência em uma nova issue
Block a user