OSDN Git Service

NFSv3: Clean up timespec encode
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Fri, 4 Oct 2019 21:00:02 +0000 (17:00 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 4 Nov 2019 02:28:44 +0000 (21:28 -0500)
Simplify the struct iattr timestamp encoding by skipping the step of
an intermediate struct timespec.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/nfs3xdr.c
include/linux/nfs_xdr.h

index 2a16bbd..927eb68 100644 (file)
@@ -456,9 +456,9 @@ static void zero_nfs_fh3(struct nfs_fh *fh)
  *             uint32  nseconds;
  *     };
  */
-static __be32 *xdr_encode_nfstime3(__be32 *p, const struct timespec *timep)
+static __be32 *xdr_encode_nfstime3(__be32 *p, const struct timespec64 *timep)
 {
-       *p++ = cpu_to_be32(timep->tv_sec);
+       *p++ = cpu_to_be32((u32)timep->tv_sec);
        *p++ = cpu_to_be32(timep->tv_nsec);
        return p;
 }
@@ -533,7 +533,6 @@ static __be32 *xdr_decode_nfstime3(__be32 *p, struct timespec64 *timep)
 static void encode_sattr3(struct xdr_stream *xdr, const struct iattr *attr,
                struct user_namespace *userns)
 {
-       struct timespec ts;
        u32 nbytes;
        __be32 *p;
 
@@ -583,10 +582,8 @@ static void encode_sattr3(struct xdr_stream *xdr, const struct iattr *attr,
                *p++ = xdr_zero;
 
        if (attr->ia_valid & ATTR_ATIME_SET) {
-               struct timespec ts;
                *p++ = xdr_two;
-               ts = timespec64_to_timespec(attr->ia_atime);
-               p = xdr_encode_nfstime3(p, &ts);
+               p = xdr_encode_nfstime3(p, &attr->ia_atime);
        } else if (attr->ia_valid & ATTR_ATIME) {
                *p++ = xdr_one;
        } else
@@ -594,8 +591,7 @@ static void encode_sattr3(struct xdr_stream *xdr, const struct iattr *attr,
 
        if (attr->ia_valid & ATTR_MTIME_SET) {
                *p++ = xdr_two;
-               ts = timespec64_to_timespec(attr->ia_mtime);
-               xdr_encode_nfstime3(p, &ts);
+               xdr_encode_nfstime3(p, &attr->ia_mtime);
        } else if (attr->ia_valid & ATTR_MTIME) {
                *p = xdr_one;
        } else
index db5c010..22bc661 100644 (file)
@@ -869,7 +869,7 @@ struct nfs3_sattrargs {
        struct nfs_fh *         fh;
        struct iattr *          sattr;
        unsigned int            guard;
-       struct timespec         guardtime;
+       struct timespec64       guardtime;
 };
 
 struct nfs3_diropargs {