提交 9d5a6434 编写于 作者: C Chuck Lever 提交者: Trond Myklebust

NFS: Update xdr_encode_foo() functions that we're keeping

Clean up.  Move the timestamp and the sattr encoder to match the
placement convention of the other helpers, update their coding style,
and refresh their documenting comments.
Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
Tested-by: NJ. Bruce Fields <bfields@redhat.com>
Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
上级 499ff710
...@@ -166,14 +166,6 @@ xdr_decode_fhandle_stream(struct xdr_stream *xdr, struct nfs_fh *fh) ...@@ -166,14 +166,6 @@ xdr_decode_fhandle_stream(struct xdr_stream *xdr, struct nfs_fh *fh)
/* /*
* Encode/decode time. * Encode/decode time.
*/ */
static inline __be32 *
xdr_encode_time3(__be32 *p, const struct timespec *timep)
{
*p++ = htonl(timep->tv_sec);
*p++ = htonl(timep->tv_nsec);
return p;
}
static inline __be32 * static inline __be32 *
xdr_decode_time3(__be32 *p, struct timespec *timep) xdr_decode_time3(__be32 *p, struct timespec *timep)
{ {
...@@ -218,52 +210,6 @@ xdr_decode_fattr(__be32 *p, struct nfs_fattr *fattr) ...@@ -218,52 +210,6 @@ xdr_decode_fattr(__be32 *p, struct nfs_fattr *fattr)
return p; return p;
} }
static inline __be32 *
xdr_encode_sattr(__be32 *p, const struct iattr *attr)
{
if (attr->ia_valid & ATTR_MODE) {
*p++ = xdr_one;
*p++ = htonl(attr->ia_mode & S_IALLUGO);
} else {
*p++ = xdr_zero;
}
if (attr->ia_valid & ATTR_UID) {
*p++ = xdr_one;
*p++ = htonl(attr->ia_uid);
} else {
*p++ = xdr_zero;
}
if (attr->ia_valid & ATTR_GID) {
*p++ = xdr_one;
*p++ = htonl(attr->ia_gid);
} else {
*p++ = xdr_zero;
}
if (attr->ia_valid & ATTR_SIZE) {
*p++ = xdr_one;
p = xdr_encode_hyper(p, (__u64) attr->ia_size);
} else {
*p++ = xdr_zero;
}
if (attr->ia_valid & ATTR_ATIME_SET) {
*p++ = xdr_two;
p = xdr_encode_time3(p, &attr->ia_atime);
} else if (attr->ia_valid & ATTR_ATIME) {
*p++ = xdr_one;
} else {
*p++ = xdr_zero;
}
if (attr->ia_valid & ATTR_MTIME_SET) {
*p++ = xdr_two;
p = xdr_encode_time3(p, &attr->ia_mtime);
} else if (attr->ia_valid & ATTR_MTIME) {
*p++ = xdr_one;
} else {
*p++ = xdr_zero;
}
return p;
}
static inline __be32 * static inline __be32 *
xdr_decode_wcc_attr(__be32 *p, struct nfs_fattr *fattr) xdr_decode_wcc_attr(__be32 *p, struct nfs_fattr *fattr)
{ {
...@@ -452,6 +398,21 @@ static void encode_nfs_fh3(struct xdr_stream *xdr, const struct nfs_fh *fh) ...@@ -452,6 +398,21 @@ static void encode_nfs_fh3(struct xdr_stream *xdr, const struct nfs_fh *fh)
xdr_encode_opaque(p, fh->data, fh->size); xdr_encode_opaque(p, fh->data, fh->size);
} }
/*
* nfstime3
*
* struct nfstime3 {
* uint32 seconds;
* uint32 nseconds;
* };
*/
static __be32 *xdr_encode_nfstime3(__be32 *p, const struct timespec *timep)
{
*p++ = cpu_to_be32(timep->tv_sec);
*p++ = cpu_to_be32(timep->tv_nsec);
return p;
}
/* /*
* sattr3 * sattr3
* *
...@@ -538,7 +499,45 @@ static void encode_sattr3(struct xdr_stream *xdr, const struct iattr *attr) ...@@ -538,7 +499,45 @@ static void encode_sattr3(struct xdr_stream *xdr, const struct iattr *attr)
nbytes += 8; nbytes += 8;
p = xdr_reserve_space(xdr, nbytes); p = xdr_reserve_space(xdr, nbytes);
xdr_encode_sattr(p, attr); if (attr->ia_valid & ATTR_MODE) {
*p++ = xdr_one;
*p++ = cpu_to_be32(attr->ia_mode & S_IALLUGO);
} else
*p++ = xdr_zero;
if (attr->ia_valid & ATTR_UID) {
*p++ = xdr_one;
*p++ = cpu_to_be32(attr->ia_uid);
} else
*p++ = xdr_zero;
if (attr->ia_valid & ATTR_GID) {
*p++ = xdr_one;
*p++ = cpu_to_be32(attr->ia_gid);
} else
*p++ = xdr_zero;
if (attr->ia_valid & ATTR_SIZE) {
*p++ = xdr_one;
p = xdr_encode_hyper(p, (u64)attr->ia_size);
} else
*p++ = xdr_zero;
if (attr->ia_valid & ATTR_ATIME_SET) {
*p++ = xdr_two;
p = xdr_encode_nfstime3(p, &attr->ia_atime);
} else if (attr->ia_valid & ATTR_ATIME) {
*p++ = xdr_one;
} else
*p++ = xdr_zero;
if (attr->ia_valid & ATTR_MTIME_SET) {
*p++ = xdr_two;
xdr_encode_nfstime3(p, &attr->ia_mtime);
} else if (attr->ia_valid & ATTR_MTIME) {
*p = xdr_one;
} else
*p = xdr_zero;
} }
/* /*
...@@ -605,7 +604,7 @@ static void encode_sattrguard3(struct xdr_stream *xdr, ...@@ -605,7 +604,7 @@ static void encode_sattrguard3(struct xdr_stream *xdr,
if (args->guard) { if (args->guard) {
p = xdr_reserve_space(xdr, 4 + 8); p = xdr_reserve_space(xdr, 4 + 8);
*p++ = xdr_one; *p++ = xdr_one;
xdr_encode_time3(p, &args->guardtime); xdr_encode_nfstime3(p, &args->guardtime);
} else { } else {
p = xdr_reserve_space(xdr, 4); p = xdr_reserve_space(xdr, 4);
*p = xdr_zero; *p = xdr_zero;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册