From patchwork Wed Nov 17 17:44:02 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 333531 X-Patchwork-Delegate: Trond.Myklebust@netapp.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oAHHfpwX022584 for ; Wed, 17 Nov 2010 17:44:08 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935012Ab0KQRoH (ORCPT ); Wed, 17 Nov 2010 12:44:07 -0500 Received: from mail-yw0-f46.google.com ([209.85.213.46]:60827 "EHLO mail-yw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934871Ab0KQRoG (ORCPT ); Wed, 17 Nov 2010 12:44:06 -0500 Received: by ywg8 with SMTP id 8so1254693ywg.19 for ; Wed, 17 Nov 2010 09:44:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:from:subject:to:cc :date:message-id:in-reply-to:references:user-agent:mime-version :content-type:content-transfer-encoding; bh=7tP8LHkvVSKgNaC/hOEA2lZ8/F/gbEaBiju+8FWJ3Pg=; b=t9Zoxj+kaKefE+FC+eJhIOoDiKwdQJugupAxPB6h7viYXdINTdEdcff2R/DcPHFVEw 1h7QXCK42eA1MY06Kw6wiZG/kubgAxQCYprVWnczYOWUQUSliJtcv/UZo7WqPx6vuk02 trpnVmIlur91yFej+iA7IFz6EWSBkkHX07lAA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:subject:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-type:content-transfer-encoding; b=j2/EyGi+SmtaAR9smgt9W0IqNhvzjYcDkjH5Ckb2aZJM4ggJc/CiwrsxwlNUVrgClN c+NkUbaKNN9dgobZG5NujB8yhl+RHhym+bu8JMqD9c7Wt7llOS1DnlXU8omm5uYXkNBj ciW5YmQ7oDACgT++NpuLCXjb2XZKByMfKgyB4= Received: by 10.231.30.202 with SMTP id v10mr7547165ibc.39.1290015844723; Wed, 17 Nov 2010 09:44:04 -0800 (PST) Received: from matisse.1015granger.net (adsl-99-26-161-222.dsl.sfldmi.sbcglobal.net [99.26.161.222]) by mx.google.com with ESMTPS id fw4sm2422512ibb.13.2010.11.17.09.44.03 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 17 Nov 2010 09:44:03 -0800 (PST) From: Chuck Lever Subject: [PATCH 03/17] NFS: Update xdr_encode_foo() functions that we're keeping To: trond.myklebust@netapp.com Cc: linux-nfs@vger.kernel.org Date: Wed, 17 Nov 2010 12:44:02 -0500 Message-ID: <20101117174402.29177.20391.stgit@matisse.1015granger.net> In-Reply-To: <20101117174112.29177.69734.stgit@matisse.1015granger.net> References: <20101117174112.29177.69734.stgit@matisse.1015granger.net> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Wed, 17 Nov 2010 17:44:08 +0000 (UTC) diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c index 0110108..53db70e 100644 --- a/fs/nfs/nfs2xdr.c +++ b/fs/nfs/nfs2xdr.c @@ -91,32 +91,6 @@ xdr_decode_fhandle(__be32 *p, struct nfs_fh *fhandle) } 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) { timep->tv_sec = ntohl(*p++); @@ -179,6 +153,39 @@ static void encode_fhandle(struct xdr_stream *xdr, const struct nfs_fh *fh) } /* + * 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 * * struct sattr {