Commit 7d34ff51 authored by Trond Myklebust's avatar Trond Myklebust

NFSv4: NFSv4 callbacks also support 64-bit timestamps

Convert the NFSv4 callbacks to use struct timestamp64, rather than
truncating times to 32-bit values.
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent e7d4b05c
...@@ -72,8 +72,8 @@ struct cb_getattrres { ...@@ -72,8 +72,8 @@ struct cb_getattrres {
uint32_t bitmap[2]; uint32_t bitmap[2];
uint64_t size; uint64_t size;
uint64_t change_attr; uint64_t change_attr;
struct timespec ctime; struct timespec64 ctime;
struct timespec mtime; struct timespec64 mtime;
}; };
struct cb_recallargs { struct cb_recallargs {
......
...@@ -56,8 +56,8 @@ __be32 nfs4_callback_getattr(void *argp, void *resp, ...@@ -56,8 +56,8 @@ __be32 nfs4_callback_getattr(void *argp, void *resp,
res->change_attr = delegation->change_attr; res->change_attr = delegation->change_attr;
if (nfs_have_writebacks(inode)) if (nfs_have_writebacks(inode))
res->change_attr++; res->change_attr++;
res->ctime = timespec64_to_timespec(inode->i_ctime); res->ctime = inode->i_ctime;
res->mtime = timespec64_to_timespec(inode->i_mtime); res->mtime = inode->i_mtime;
res->bitmap[0] = (FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE) & res->bitmap[0] = (FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE) &
args->bitmap[0]; args->bitmap[0];
res->bitmap[1] = (FATTR4_WORD1_TIME_METADATA|FATTR4_WORD1_TIME_MODIFY) & res->bitmap[1] = (FATTR4_WORD1_TIME_METADATA|FATTR4_WORD1_TIME_MODIFY) &
......
...@@ -627,7 +627,7 @@ static __be32 encode_attr_size(struct xdr_stream *xdr, const uint32_t *bitmap, u ...@@ -627,7 +627,7 @@ static __be32 encode_attr_size(struct xdr_stream *xdr, const uint32_t *bitmap, u
return 0; 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; __be32 *p;
...@@ -639,14 +639,14 @@ static __be32 encode_attr_time(struct xdr_stream *xdr, const struct timespec *ti ...@@ -639,14 +639,14 @@ static __be32 encode_attr_time(struct xdr_stream *xdr, const struct timespec *ti
return 0; 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)) if (!(bitmap[1] & FATTR4_WORD1_TIME_METADATA))
return 0; return 0;
return encode_attr_time(xdr,time); 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)) if (!(bitmap[1] & FATTR4_WORD1_TIME_MODIFY))
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment