mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
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: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
@@ -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,
|
|||||||
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
|
|||||||
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
|
|||||||
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;
|
||||||
|
Reference in New Issue
Block a user