]> git.baikalelectronics.ru Git - kernel.git/commitdiff
NFSD: Clean up after updating NFSv3 ACL encoders
authorChuck Lever <chuck.lever@oracle.com>
Sun, 15 Nov 2020 20:09:16 +0000 (15:09 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 22 Mar 2021 14:19:02 +0000 (10:19 -0400)
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs3xdr.c
fs/nfsd/xdr3.h

index 941740a97f8f57345308832ca40f6148d3974839..fcfa0d611b931841ba9888ecd77316351bd804b0 100644 (file)
@@ -48,13 +48,6 @@ static const u32 nfs3_ftypes[] = {
  * Basic NFSv3 data types (RFC 1813 Sections 2.5 and 2.6)
  */
 
-static __be32 *
-encode_time3(__be32 *p, struct timespec64 *time)
-{
-       *p++ = htonl((u32) time->tv_sec); *p++ = htonl(time->tv_nsec);
-       return p;
-}
-
 static __be32 *
 encode_nfstime3(__be32 *p, const struct timespec64 *time)
 {
@@ -396,54 +389,6 @@ svcxdr_encode_fattr3(struct svc_rqst *rqstp, struct xdr_stream *xdr,
        return true;
 }
 
-static __be32 *encode_fsid(__be32 *p, struct svc_fh *fhp)
-{
-       u64 f;
-       switch(fsid_source(fhp)) {
-       default:
-       case FSIDSOURCE_DEV:
-               p = xdr_encode_hyper(p, (u64)huge_encode_dev
-                                    (fhp->fh_dentry->d_sb->s_dev));
-               break;
-       case FSIDSOURCE_FSID:
-               p = xdr_encode_hyper(p, (u64) fhp->fh_export->ex_fsid);
-               break;
-       case FSIDSOURCE_UUID:
-               f = ((u64*)fhp->fh_export->ex_uuid)[0];
-               f ^= ((u64*)fhp->fh_export->ex_uuid)[1];
-               p = xdr_encode_hyper(p, f);
-               break;
-       }
-       return p;
-}
-
-static __be32 *
-encode_fattr3(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp,
-             struct kstat *stat)
-{
-       struct user_namespace *userns = nfsd_user_namespace(rqstp);
-       *p++ = htonl(nfs3_ftypes[(stat->mode & S_IFMT) >> 12]);
-       *p++ = htonl((u32) (stat->mode & S_IALLUGO));
-       *p++ = htonl((u32) stat->nlink);
-       *p++ = htonl((u32) from_kuid_munged(userns, stat->uid));
-       *p++ = htonl((u32) from_kgid_munged(userns, stat->gid));
-       if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
-               p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
-       } else {
-               p = xdr_encode_hyper(p, (u64) stat->size);
-       }
-       p = xdr_encode_hyper(p, ((u64)stat->blocks) << 9);
-       *p++ = htonl((u32) MAJOR(stat->rdev));
-       *p++ = htonl((u32) MINOR(stat->rdev));
-       p = encode_fsid(p, fhp);
-       p = xdr_encode_hyper(p, stat->ino);
-       p = encode_time3(p, &stat->atime);
-       p = encode_time3(p, &stat->mtime);
-       p = encode_time3(p, &stat->ctime);
-
-       return p;
-}
-
 static bool
 svcxdr_encode_wcc_attr(struct xdr_stream *xdr, const struct svc_fh *fhp)
 {
@@ -512,37 +457,6 @@ no_post_op_attrs:
        return xdr_stream_encode_item_absent(xdr) > 0;
 }
 
-/*
- * Encode post-operation attributes.
- * The inode may be NULL if the call failed because of a stale file
- * handle. In this case, no attributes are returned.
- */
-static __be32 *
-encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp)
-{
-       struct dentry *dentry = fhp->fh_dentry;
-       if (!fhp->fh_no_wcc && dentry && d_really_is_positive(dentry)) {
-               __be32 err;
-               struct kstat stat;
-
-               err = fh_getattr(fhp, &stat);
-               if (!err) {
-                       *p++ = xdr_one;         /* attributes follow */
-                       lease_get_mtime(d_inode(dentry), &stat.mtime);
-                       return encode_fattr3(rqstp, p, fhp, &stat);
-               }
-       }
-       *p++ = xdr_zero;
-       return p;
-}
-
-/* Helper for NFSv3 ACLs */
-__be32 *
-nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp)
-{
-       return encode_post_op_attr(rqstp, p, fhp);
-}
-
 /*
  * Encode weak cache consistency data
  */
index 746c5f79964f1152eaceadec6e642cfd943f3ea3..933008382bbeb09348bcdb6ac20c493cdf4c951e 100644 (file)
@@ -305,8 +305,6 @@ int nfs3svc_encode_entry3(void *data, const char *name, int namlen,
 int nfs3svc_encode_entryplus3(void *data, const char *name, int namlen,
                              loff_t offset, u64 ino, unsigned int d_type);
 /* Helper functions for NFSv3 ACL code */
-__be32 *nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p,
-                               struct svc_fh *fhp);
 bool svcxdr_decode_nfs_fh3(struct xdr_stream *xdr, struct svc_fh *fhp);
 bool svcxdr_encode_nfsstat3(struct xdr_stream *xdr, __be32 status);
 bool svcxdr_encode_post_op_attr(struct svc_rqst *rqstp, struct xdr_stream *xdr,