I thought the use of PRIu64  was frowned on?

   Regards
   Steve
----- Original Message ----- From: "hiren panchasara" <hi...@freebsd.org>
To: "Glen Barber" <g...@freebsd.org>; "Hiroki Sato" <h...@freebsd.org>
Cc: "Rick Macklem" <rmack...@freebsd.org>; "src-committers" <src-committ...@freebsd.org>; "svn-src-all" <svn-src-...@freebsd.org>; "svn-src-head" <svn-src-head@freebsd.org>
Sent: Saturday, June 22, 2013 7:16 PM
Subject: Re: svn commit: r252074 - head/sys/fs/nfsclient


+ Hiroki

Hiroki seems to have a patch fixing it.

http://lists.freebsd.org/pipermail/freebsd-current/2013-June/042605.html

cheers,
Hiren

On Fri, Jun 21, 2013 at 9:22 PM, Glen Barber <g...@freebsd.org> wrote:
On Fri, Jun 21, 2013 at 10:46:17PM +0000, Rick Macklem wrote:
Author: rmacklem
Date: Fri Jun 21 22:46:16 2013
New Revision: 252074
URL: http://svnweb.freebsd.org/changeset/base/252074

Log:
  The NFSv4.1 LayoutCommit operation requires a valid offset and length.
  (0, 0 is not sufficient) This patch a loop for each file layout, using
  the offset, length of each file layout in a separate LayoutCommit.

Modified:
  head/sys/fs/nfsclient/nfs_clstate.c

Modified: head/sys/fs/nfsclient/nfs_clstate.c
==============================================================================
--- head/sys/fs/nfsclient/nfs_clstate.c       Fri Jun 21 22:45:03 2013        
(r252073)
+++ head/sys/fs/nfsclient/nfs_clstate.c       Fri Jun 21 22:46:16 2013        
(r252074)
@@ -5145,16 +5145,28 @@ static void
 nfscl_dolayoutcommit(struct nfsmount *nmp, struct nfscllayout *lyp,
     struct ucred *cred, NFSPROC_T *p)
 {
+     struct nfsclflayout *flp;
+     uint64_t len;
      int error;

-     error = nfsrpc_layoutcommit(nmp, lyp->nfsly_fh, lyp->nfsly_fhlen,
-         0, 0, 0, lyp->nfsly_lastbyte, &lyp->nfsly_stateid,
-         NFSLAYOUT_NFSV4_1_FILES, 0, NULL, cred, p, NULL);
-     if (error == NFSERR_NOTSUPP) {
-             /* If the server doesn't want it, don't bother doing it. */
-             NFSLOCKMNT(nmp);
-             nmp->nm_state |= NFSSTA_NOLAYOUTCOMMIT;
-             NFSUNLOCKMNT(nmp);
+     LIST_FOREACH(flp, &lyp->nfsly_flayrw, nfsfl_list) {
+             if (flp->nfsfl_off <= lyp->nfsly_lastbyte) {
+                     len = flp->nfsfl_end - flp->nfsfl_off;
+                     error = nfsrpc_layoutcommit(nmp, lyp->nfsly_fh,
+                         lyp->nfsly_fhlen, 0, flp->nfsfl_off, len,
+                         lyp->nfsly_lastbyte, &lyp->nfsly_stateid,
+                         NFSLAYOUT_NFSV4_1_FILES, 0, NULL, cred, p, NULL);
+                     NFSCL_DEBUG(4, "layoutcommit err=%d off=%qd len=%qd "
+                         "lastbyte=%qd\n", error, flp->nfsfl_off, len,
+                         lyp->nfsly_lastbyte);
+                     if (error == NFSERR_NOTSUPP) {
+                             /* If not supported, don't bother doing it. */
+                             NFSLOCKMNT(nmp);
+                             nmp->nm_state |= NFSSTA_NOLAYOUTCOMMIT;
+                             NFSUNLOCKMNT(nmp);
+                             break;
+                     }
+             }
      }
 }



This breaks head/.

/src/sys/fs/nfsclient/nfs_clstate.c:5161:8: error: format specifies type 'long 
long' but the
argument has type 'uint64_t' (aka 'unsigned long') [-Werror,-Wformat]
                            lyp->nfsly_lastbyte);
                            ^~~~~~~~~~~~~~~~~~~
/src/sys/fs/nfs/nfscl.h:74:11: note: expanded from macro 'NFSCL_DEBUG'
                        printf(__VA_ARGS__); \
                               ^
3 errors generated.
*** Error code 1

Stop.
make: stopped in /obj/amd64.amd64/src/sys/LINT
*** Error code 1

Stop.
make: stopped in /src

Glen




================================================
This e.mail is private and confidential between Multiplay (UK) Ltd. and the person or entity to whom it is addressed. In the event of misdirection, the recipient is prohibited from using, copying, printing or otherwise disseminating it or any information contained in it.
In the event of misdirection, illegible or incomplete transmission please 
telephone +44 845 868 1337
or return the E.mail to postmas...@multiplay.co.uk.

_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to