]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
NFSv4: NFSv4 callbacks also support 64-bit timestamps
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Fri, 4 Oct 2019 20:46:53 +0000 (16:46 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 4 Nov 2019 02:28:44 +0000 (21:28 -0500)
Convert the NFSv4 callbacks to use struct timestamp64, rather than
truncating times to 32-bit values.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/callback.h
fs/nfs/callback_proc.c
fs/nfs/callback_xdr.c

index 8f34daf85f7036a1573f78d8e95f27347cd7c639..549350259840876d340deb48b7604d09323a40b4 100644 (file)
@@ -72,8 +72,8 @@ struct cb_getattrres {
        uint32_t bitmap[2];
        uint64_t size;
        uint64_t change_attr;
-       struct timespec ctime;
-       struct timespec mtime;
+       struct timespec64 ctime;
+       struct timespec64 mtime;
 };
 
 struct cb_recallargs {
index f39924ba050b1a69680b031a0dbe4997cf4350ea..db3e7771e59755b43f9b1474ae6828bf8255fe6b 100644 (file)
@@ -56,8 +56,8 @@ __be32 nfs4_callback_getattr(void *argp, void *resp,
        res->change_attr = delegation->change_attr;
        if (nfs_have_writebacks(inode))
                res->change_attr++;
-       res->ctime = timespec64_to_timespec(inode->i_ctime);
-       res->mtime = timespec64_to_timespec(inode->i_mtime);
+       res->ctime = inode->i_ctime;
+       res->mtime = inode->i_mtime;
        res->bitmap[0] = (FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE) &
                args->bitmap[0];
        res->bitmap[1] = (FATTR4_WORD1_TIME_METADATA|FATTR4_WORD1_TIME_MODIFY) &
index 73a5a5ea2976680559bc59293ccb554598557a80..03a20f5716c7a39b23ac97f218f6d1ea9bbff689 100644 (file)
@@ -627,7 +627,7 @@ static __be32 encode_attr_size(struct xdr_stream *xdr, const uint32_t *bitmap, u
        return 0;
 }
 
-static __be32 encode_attr_time(struct xdr_stream *xdr, const struct timespec *time)
+static __be32 encode_attr_time(struct xdr_stream *xdr, const struct timespec64 *time)
 {
        __be32 *p;
 
@@ -639,14 +639,14 @@ static __be32 encode_attr_time(struct xdr_stream *xdr, const struct timespec *ti
        return 0;
 }
 
-static __be32 encode_attr_ctime(struct xdr_stream *xdr, const uint32_t *bitmap, const struct timespec *time)
+static __be32 encode_attr_ctime(struct xdr_stream *xdr, const uint32_t *bitmap, const struct timespec64 *time)
 {
        if (!(bitmap[1] & FATTR4_WORD1_TIME_METADATA))
                return 0;
        return encode_attr_time(xdr,time);
 }
 
-static __be32 encode_attr_mtime(struct xdr_stream *xdr, const uint32_t *bitmap, const struct timespec *time)
+static __be32 encode_attr_mtime(struct xdr_stream *xdr, const uint32_t *bitmap, const struct timespec64 *time)
 {
        if (!(bitmap[1] & FATTR4_WORD1_TIME_MODIFY))
                return 0;