]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/nfs/nfs2xdr.c
NFS: Update xdr_encode_foo() functions that we're keeping
[karo-tx-linux.git] / fs / nfs / nfs2xdr.c
index f5ea9dcf08d63f6f95bebff7e0cd96499a5748a1..c79977304af899b8036cbc7c4db68705304cb992 100644 (file)
@@ -90,32 +90,6 @@ xdr_decode_fhandle(__be32 *p, struct nfs_fh *fhandle)
        return p + XDR_QUADLEN(NFS2_FHSIZE);
 }
 
-static inline __be32*
-xdr_encode_time(__be32 *p, const struct timespec *timep)
-{
-       *p++ = htonl(timep->tv_sec);
-       /* Convert nanoseconds into microseconds */
-       *p++ = htonl(timep->tv_nsec ? timep->tv_nsec / 1000 : 0);
-       return p;
-}
-
-static inline __be32*
-xdr_encode_current_server_time(__be32 *p, const struct timespec *timep)
-{
-       /*
-        * Passing the invalid value useconds=1000000 is a
-        * Sun convention for "set to current server time".
-        * It's needed to make permissions checks for the
-        * "touch" program across v2 mounts to Solaris and
-        * Irix boxes work correctly. See description of
-        * sattr in section 6.1 of "NFS Illustrated" by
-        * Brent Callaghan, Addison-Wesley, ISBN 0-201-32750-5
-        */
-       *p++ = htonl(timep->tv_sec);
-       *p++ = htonl(1000000);
-       return p;
-}
-
 static inline __be32*
 xdr_decode_time(__be32 *p, struct timespec *timep)
 {
@@ -178,6 +152,39 @@ static void encode_fhandle(struct xdr_stream *xdr, const struct nfs_fh *fh)
        memcpy(p, fh->data, NFS2_FHSIZE);
 }
 
+/*
+ * 2.3.4.  timeval
+ *
+ *     struct timeval {
+ *             unsigned int seconds;
+ *             unsigned int useconds;
+ *     };
+ */
+static __be32 *xdr_encode_time(__be32 *p, const struct timespec *timep)
+{
+       *p++ = cpu_to_be32(timep->tv_sec);
+       if (timep->tv_nsec != 0)
+               *p++ = cpu_to_be32(timep->tv_nsec / NSEC_PER_USEC);
+       else
+               *p++ = cpu_to_be32(0);
+       return p;
+}
+
+/*
+ * Passing the invalid value useconds=1000000 is a Sun convention for
+ * "set to current server time".  It's needed to make permissions checks
+ * for the "touch" program across v2 mounts to Solaris and Irix servers
+ * work correctly.  See description of sattr in section 6.1 of "NFS
+ * Illustrated" by Brent Callaghan, Addison-Wesley, ISBN 0-201-32750-5.
+ */
+static __be32 *xdr_encode_current_server_time(__be32 *p,
+                                             const struct timespec *timep)
+{
+       *p++ = cpu_to_be32(timep->tv_sec);
+       *p++ = cpu_to_be32(1000000);
+       return p;
+}
+
 /*
  * 2.3.6.  sattr
  *