svn commit: r252074 - head/sys/fs/nfsclient
hiren panchasara
hiren at FreeBSD.org
Sat Jun 22 18:16:34 UTC 2013
+ 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
>
More information about the svn-src-all
mailing list