svn commit: r252074 - head/sys/fs/nfsclient

Steven Hartland killing at multiplay.co.uk
Sat Jun 22 18:22:32 UTC 2013


I thought the use of PRIu64  was frowned on?

    Regards
    Steve
----- Original Message ----- 
From: "hiren panchasara" <hiren at FreeBSD.org>
To: "Glen Barber" <gjb at freebsd.org>; "Hiroki Sato" <hrs at freebsd.org>
Cc: "Rick Macklem" <rmacklem at freebsd.org>; "src-committers" <src-committers at freebsd.org>; "svn-src-all" <svn-src-all at freebsd.org>; 
"svn-src-head" <svn-src-head at 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 <gjb at 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 postmaster at multiplay.co.uk.



More information about the svn-src-all mailing list