Commit 6430b323 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv3: Clean up timespec encode



Simplify the struct iattr timestamp encoding by skipping the step of
an intermediate struct timespec.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent c9dbfd96
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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 {