* [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 @ 2015-07-28 11:46 Kinglong Mee 2015-07-29 19:37 ` J. Bruce Fields 0 siblings, 1 reply; 8+ messages in thread From: Kinglong Mee @ 2015-07-28 11:46 UTC (permalink / raw) To: J. Bruce Fields, linux-nfs@vger.kernel.org; +Cc: tigran.mkrtchyan, kinglongmee Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> --- nfs4.1/xdrdef/nfs4.x | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nfs4.1/xdrdef/nfs4.x b/nfs4.1/xdrdef/nfs4.x index 024e0b4..cb3db7e 100644 --- a/nfs4.1/xdrdef/nfs4.x +++ b/nfs4.1/xdrdef/nfs4.x @@ -852,7 +852,7 @@ typedef change_policy4 fattr4_change_policy; typedef uint64_t fattr_space_freed; typedef change_attr_type4 fattr4_change_attr_type; -typedef sec_label4 fattr_sec_label<>; +typedef sec_label4 fattr4_sec_label; %/* % * REQUIRED Attributes -- 2.4.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 2015-07-28 11:46 [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 Kinglong Mee @ 2015-07-29 19:37 ` J. Bruce Fields 2015-07-30 12:05 ` Kinglong Mee 0 siblings, 1 reply; 8+ messages in thread From: J. Bruce Fields @ 2015-07-29 19:37 UTC (permalink / raw) To: Kinglong Mee; +Cc: linux-nfs@vger.kernel.org, tigran.mkrtchyan On Tue, Jul 28, 2015 at 07:46:35PM +0800, Kinglong Mee wrote: > Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> > --- See nfs4.1/xdrdef/README and please update that README and nfs4.x.diff too if necessary (and report to nfsv4@ietf.org if this is still a bug in the minorversion 2 draft). --b. > nfs4.1/xdrdef/nfs4.x | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/nfs4.1/xdrdef/nfs4.x b/nfs4.1/xdrdef/nfs4.x > index 024e0b4..cb3db7e 100644 > --- a/nfs4.1/xdrdef/nfs4.x > +++ b/nfs4.1/xdrdef/nfs4.x > @@ -852,7 +852,7 @@ typedef change_policy4 fattr4_change_policy; > typedef uint64_t fattr_space_freed; > typedef change_attr_type4 > fattr4_change_attr_type; > -typedef sec_label4 fattr_sec_label<>; > +typedef sec_label4 fattr4_sec_label; > > %/* > % * REQUIRED Attributes > -- > 2.4.3 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 2015-07-29 19:37 ` J. Bruce Fields @ 2015-07-30 12:05 ` Kinglong Mee 2015-07-30 12:13 ` [PATCH v2] 4.1 xdrdef: Update nfs4.x to the latest dot-x-38.txt Kinglong Mee ` (3 more replies) 0 siblings, 4 replies; 8+ messages in thread From: Kinglong Mee @ 2015-07-30 12:05 UTC (permalink / raw) To: J. Bruce Fields; +Cc: linux-nfs@vger.kernel.org, tigran.mkrtchyan, kinglongmee On 7/30/2015 03:37, J. Bruce Fields wrote: > On Tue, Jul 28, 2015 at 07:46:35PM +0800, Kinglong Mee wrote: >> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> >> --- > > See nfs4.1/xdrdef/README and please update that README and nfs4.x.diff > too if necessary (and report to nfsv4@ietf.org if this is still a bug in > the minorversion 2 draft). Description at, https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-38#section-12.2.4 "The FATTR4_SEC_LABEL contains an array of two components with the first component being an LFS." It seems both nfs server and client have wrong implement, not the rfc's bug. xdrdef/nfs4.x is out of date, just update it. thanks, Kinglong Mee > > --b. > >> nfs4.1/xdrdef/nfs4.x | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/nfs4.1/xdrdef/nfs4.x b/nfs4.1/xdrdef/nfs4.x >> index 024e0b4..cb3db7e 100644 >> --- a/nfs4.1/xdrdef/nfs4.x >> +++ b/nfs4.1/xdrdef/nfs4.x >> @@ -852,7 +852,7 @@ typedef change_policy4 fattr4_change_policy; >> typedef uint64_t fattr_space_freed; >> typedef change_attr_type4 >> fattr4_change_attr_type; >> -typedef sec_label4 fattr_sec_label<>; >> +typedef sec_label4 fattr4_sec_label; >> >> %/* >> % * REQUIRED Attributes >> -- >> 2.4.3 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] 4.1 xdrdef: Update nfs4.x to the latest dot-x-38.txt 2015-07-30 12:05 ` Kinglong Mee @ 2015-07-30 12:13 ` Kinglong Mee 2015-08-18 19:27 ` J. Bruce Fields 2015-07-30 14:22 ` [PATCH] NFSD: Encode security label as an array Kinglong Mee ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Kinglong Mee @ 2015-07-30 12:13 UTC (permalink / raw) To: J. Bruce Fields; +Cc: linux-nfs@vger.kernel.org, tigran.mkrtchyan, kinglongmee There are some updates and bugfixes between draft-ietf-nfsv4-minorversion2-dot-x-38.txt and draft-ietf-nfsv4-minorversion2-dot-x-30.txt. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> --- nfs4.1/xdrdef/README | 2 +- nfs4.1/xdrdef/nfs4.x | 108 +++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 92 insertions(+), 18 deletions(-) diff --git a/nfs4.1/xdrdef/README b/nfs4.1/xdrdef/README index 2d57ee1..c39fd43 100644 --- a/nfs4.1/xdrdef/README +++ b/nfs4.1/xdrdef/README @@ -1,4 +1,4 @@ # Note nfs4.x was created using: -curl http://www.ietf.org/id/draft-ietf-nfsv4-minorversion2-dot-x-30.txt|grep "^ *///" | sed 's?^ */// ??' | sed 's?^ *///$??' >nfs4.1/xdrdef/nfs4.x +curl http://www.ietf.org/id/draft-ietf-nfsv4-minorversion2-dot-x-38.txt|grep "^ *///" | sed 's?^ */// ??' | sed 's?^ *///$??' >nfs4.1/xdrdef/nfs4.x patch nfs4.1/xdrdef/nfs4.x <nfs4.1/xdrdef/nfs4.x.diff diff --git a/nfs4.1/xdrdef/nfs4.x b/nfs4.1/xdrdef/nfs4.x index 024e0b4..23c6d7c 100644 --- a/nfs4.1/xdrdef/nfs4.x +++ b/nfs4.1/xdrdef/nfs4.x @@ -1,8 +1,53 @@ /* - * This file was machine generated for - * draft-ietf-nfsv4-minorversion2-30 - * Last updated Wed Jan 21 09:59:04 PST 2015 + * This file was machine generated for [draft-ietf-nfsv4-minorversion2-38]. + * + * Last updated Tue Apr 28 09:46:23 PDT 2015 */ + +/* + * Copyright (c) 2015 IETF Trust and the persons identified + * as the document authors. All rights reserved. + * + * The Redistribution and use in source and binary forms, with + * or without modification, are permitted provided that the + * following conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the + * following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * - Neither the name of Internet Society Society, IETF or IETF + * Trust, nor the names of specific contributors, may be + * used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + */ + +/* + * This code was derived from [draft-ietf-nfsv4-minorversion2-dot-x-38]. + */ + /* * Copyright (C) The IETF Trust (2007-2014) * All Rights Reserved. @@ -667,9 +712,9 @@ typedef uint32_t fs_charset_cap4; */ enum netloc_type4 { - NL4_NAME = 0, - NL4_URL = 1, - NL4_NETADDR = 2 + NL4_NAME = 1, + NL4_URL = 2, + NL4_NETADDR = 3 }; union netloc4 switch (netloc_type4 nl_type) { case NL4_NAME: utf8str_cis nl_name; @@ -849,10 +894,11 @@ typedef change_policy4 fattr4_change_policy; /* * attributes new to NFSv4.2 */ -typedef uint64_t fattr_space_freed; +typedef uint64_t fattr4_space_freed; typedef change_attr_type4 fattr4_change_attr_type; -typedef sec_label4 fattr_sec_label<>; +typedef sec_label4 fattr4_sec_label<>; +typedef uint32_t fattr4_clone_blksize; %/* % * REQUIRED Attributes @@ -931,10 +977,6 @@ const FATTR4_DIRENT_NOTIF_DELAY = 57; const FATTR4_DACL = 58; const FATTR4_SACL = 59; const FATTR4_CHANGE_POLICY = 60; - -%/* -% * new to NFSV4.2 -% */ const FATTR4_FS_STATUS = 61; const FATTR4_FS_LAYOUT_TYPES = 62; const FATTR4_LAYOUT_HINT = 63; @@ -950,7 +992,11 @@ const FATTR4_RETENTEVT_SET = 72; const FATTR4_RETENTION_HOLD = 73; const FATTR4_MODE_SET_MASKED = 74; const FATTR4_FS_CHARSET_CAP = 76; -/* 77 is currently unused */ + +%/* +% * new to NFSV4.2 +% */ +const FATTR4_CLONE_BLKSIZE = 77; const FATTR4_SPACE_FREED = 78; const FATTR4_CHANGE_ATTR_TYPE = 79; const FATTR4_SEC_LABEL = 80; @@ -1287,6 +1333,7 @@ enum nfs_opnum4 { OP_READ_PLUS = 68, OP_SEEK = 69, OP_WRITE_SAME = 70, + OP_CLONE = 71, OP_ILLEGAL = 10044 }; @@ -1316,6 +1363,19 @@ union ACCESS4res switch (nfsstat4 status) { void; }; +struct CLONE4args { + /* SAVED_FH: source file */ + /* CURRENT_FH: destination file */ + stateid4 cl_src_stateid; + stateid4 cl_dst_stateid; + offset4 cl_src_offset; + offset4 cl_dst_offset; + length4 cl_count; +}; + +struct CLONE4res { + nfsstat4 cl_status; +}; struct CLOSE4args { /* CURRENT_FH: object */ seqid4 seqid; @@ -2759,13 +2819,24 @@ struct COPY4args { }; -struct COPY4res { - nfsstat4 cr_status; - write_response4 cr_response; +struct copy_requirements4 { bool cr_consecutive; bool cr_synchronous; }; +struct COPY4resok { + write_response4 cr_response; + copy_requirements4 cr_requirements; +}; + +union COPY4res switch (nfsstat4 cr_status) { +case NFS4_OK: + COPY4resok cr_resok4; +case NFS4ERR_OFFLOAD_NO_REQS: + copy_requirements4 cr_requirements; +default: + void; +}; struct COPY_NOTIFY4args { /* CURRENT_FH: source file */ @@ -2775,6 +2846,7 @@ struct COPY_NOTIFY4args { struct COPY_NOTIFY4resok { nfstime4 cnr_lease_time; + stateid4 cnr_stateid; netloc4 cnr_source_server<>; }; @@ -2887,7 +2959,7 @@ struct LAYOUTERROR4res { }; struct io_info4 { - uint32_t ii_count; + uint64_t ii_count; uint64_t ii_bytes; }; @@ -3088,6 +3160,7 @@ union nfs_argop4 switch (nfs_opnum4 argop) { case OP_READ_PLUS: READ_PLUS4args opread_plus; case OP_SEEK: SEEK4args opseek; case OP_WRITE_SAME: WRITE_SAME4args opwrite_same; + case OP_CLONE: CLONE4args opclone; /* Operations not new to NFSv4.1 */ case OP_ILLEGAL: void; @@ -3216,6 +3289,7 @@ union nfs_resop4 switch (nfs_opnum4 resop) { case OP_READ_PLUS: READ_PLUS4res opread_plus; case OP_SEEK: SEEK4res opseek; case OP_WRITE_SAME: WRITE_SAME4res opwrite_same; + case OP_CLONE: CLONE4res opclone; /* Operations not new to NFSv4.1 */ case OP_ILLEGAL: ILLEGAL4res opillegal; -- 2.4.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] 4.1 xdrdef: Update nfs4.x to the latest dot-x-38.txt 2015-07-30 12:13 ` [PATCH v2] 4.1 xdrdef: Update nfs4.x to the latest dot-x-38.txt Kinglong Mee @ 2015-08-18 19:27 ` J. Bruce Fields 0 siblings, 0 replies; 8+ messages in thread From: J. Bruce Fields @ 2015-08-18 19:27 UTC (permalink / raw) To: Kinglong Mee; +Cc: linux-nfs@vger.kernel.org, tigran.mkrtchyan On Thu, Jul 30, 2015 at 08:13:22PM +0800, Kinglong Mee wrote: > There are some updates and bugfixes between draft-ietf-nfsv4-minorversion2-dot-x-38.txt > and draft-ietf-nfsv4-minorversion2-dot-x-30.txt. Applied, thanks.--b. > > Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> > --- > nfs4.1/xdrdef/README | 2 +- > nfs4.1/xdrdef/nfs4.x | 108 +++++++++++++++++++++++++++++++++++++++++++-------- > 2 files changed, 92 insertions(+), 18 deletions(-) > > diff --git a/nfs4.1/xdrdef/README b/nfs4.1/xdrdef/README > index 2d57ee1..c39fd43 100644 > --- a/nfs4.1/xdrdef/README > +++ b/nfs4.1/xdrdef/README > @@ -1,4 +1,4 @@ > # Note nfs4.x was created using: > > -curl http://www.ietf.org/id/draft-ietf-nfsv4-minorversion2-dot-x-30.txt|grep "^ *///" | sed 's?^ */// ??' | sed 's?^ *///$??' >nfs4.1/xdrdef/nfs4.x > +curl http://www.ietf.org/id/draft-ietf-nfsv4-minorversion2-dot-x-38.txt|grep "^ *///" | sed 's?^ */// ??' | sed 's?^ *///$??' >nfs4.1/xdrdef/nfs4.x > patch nfs4.1/xdrdef/nfs4.x <nfs4.1/xdrdef/nfs4.x.diff > diff --git a/nfs4.1/xdrdef/nfs4.x b/nfs4.1/xdrdef/nfs4.x > index 024e0b4..23c6d7c 100644 > --- a/nfs4.1/xdrdef/nfs4.x > +++ b/nfs4.1/xdrdef/nfs4.x > @@ -1,8 +1,53 @@ > /* > - * This file was machine generated for > - * draft-ietf-nfsv4-minorversion2-30 > - * Last updated Wed Jan 21 09:59:04 PST 2015 > + * This file was machine generated for [draft-ietf-nfsv4-minorversion2-38]. > + * > + * Last updated Tue Apr 28 09:46:23 PDT 2015 > */ > + > +/* > + * Copyright (c) 2015 IETF Trust and the persons identified > + * as the document authors. All rights reserved. > + * > + * The Redistribution and use in source and binary forms, with > + * or without modification, are permitted provided that the > + * following conditions are met: > + * > + * - Redistributions of source code must retain the above > + * copyright notice, this list of conditions and the > + * following disclaimer. > + * > + * - Redistributions in binary form must reproduce the above > + * copyright notice, this list of conditions and the > + * following disclaimer in the documentation and/or other > + * materials provided with the distribution. > + * > + * - Neither the name of Internet Society Society, IETF or IETF > + * Trust, nor the names of specific contributors, may be > + * used to endorse or promote products derived from this > + * software without specific prior written permission. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS > + * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED > + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS > + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO > + * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, > + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT > + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR > + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF > + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, > + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING > + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF > + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + > + */ > + > +/* > + * This code was derived from [draft-ietf-nfsv4-minorversion2-dot-x-38]. > + */ > + > /* > * Copyright (C) The IETF Trust (2007-2014) > * All Rights Reserved. > @@ -667,9 +712,9 @@ typedef uint32_t fs_charset_cap4; > */ > > enum netloc_type4 { > - NL4_NAME = 0, > - NL4_URL = 1, > - NL4_NETADDR = 2 > + NL4_NAME = 1, > + NL4_URL = 2, > + NL4_NETADDR = 3 > }; > union netloc4 switch (netloc_type4 nl_type) { > case NL4_NAME: utf8str_cis nl_name; > @@ -849,10 +894,11 @@ typedef change_policy4 fattr4_change_policy; > /* > * attributes new to NFSv4.2 > */ > -typedef uint64_t fattr_space_freed; > +typedef uint64_t fattr4_space_freed; > typedef change_attr_type4 > fattr4_change_attr_type; > -typedef sec_label4 fattr_sec_label<>; > +typedef sec_label4 fattr4_sec_label<>; > +typedef uint32_t fattr4_clone_blksize; > > %/* > % * REQUIRED Attributes > @@ -931,10 +977,6 @@ const FATTR4_DIRENT_NOTIF_DELAY = 57; > const FATTR4_DACL = 58; > const FATTR4_SACL = 59; > const FATTR4_CHANGE_POLICY = 60; > - > -%/* > -% * new to NFSV4.2 > -% */ > const FATTR4_FS_STATUS = 61; > const FATTR4_FS_LAYOUT_TYPES = 62; > const FATTR4_LAYOUT_HINT = 63; > @@ -950,7 +992,11 @@ const FATTR4_RETENTEVT_SET = 72; > const FATTR4_RETENTION_HOLD = 73; > const FATTR4_MODE_SET_MASKED = 74; > const FATTR4_FS_CHARSET_CAP = 76; > -/* 77 is currently unused */ > + > +%/* > +% * new to NFSV4.2 > +% */ > +const FATTR4_CLONE_BLKSIZE = 77; > const FATTR4_SPACE_FREED = 78; > const FATTR4_CHANGE_ATTR_TYPE = 79; > const FATTR4_SEC_LABEL = 80; > @@ -1287,6 +1333,7 @@ enum nfs_opnum4 { > OP_READ_PLUS = 68, > OP_SEEK = 69, > OP_WRITE_SAME = 70, > + OP_CLONE = 71, > OP_ILLEGAL = 10044 > }; > > @@ -1316,6 +1363,19 @@ union ACCESS4res switch (nfsstat4 status) { > void; > }; > > +struct CLONE4args { > + /* SAVED_FH: source file */ > + /* CURRENT_FH: destination file */ > + stateid4 cl_src_stateid; > + stateid4 cl_dst_stateid; > + offset4 cl_src_offset; > + offset4 cl_dst_offset; > + length4 cl_count; > +}; > + > +struct CLONE4res { > + nfsstat4 cl_status; > +}; > struct CLOSE4args { > /* CURRENT_FH: object */ > seqid4 seqid; > @@ -2759,13 +2819,24 @@ struct COPY4args { > }; > > > -struct COPY4res { > - nfsstat4 cr_status; > - write_response4 cr_response; > +struct copy_requirements4 { > bool cr_consecutive; > bool cr_synchronous; > }; > > +struct COPY4resok { > + write_response4 cr_response; > + copy_requirements4 cr_requirements; > +}; > + > +union COPY4res switch (nfsstat4 cr_status) { > +case NFS4_OK: > + COPY4resok cr_resok4; > +case NFS4ERR_OFFLOAD_NO_REQS: > + copy_requirements4 cr_requirements; > +default: > + void; > +}; > > struct COPY_NOTIFY4args { > /* CURRENT_FH: source file */ > @@ -2775,6 +2846,7 @@ struct COPY_NOTIFY4args { > > struct COPY_NOTIFY4resok { > nfstime4 cnr_lease_time; > + stateid4 cnr_stateid; > netloc4 cnr_source_server<>; > }; > > @@ -2887,7 +2959,7 @@ struct LAYOUTERROR4res { > }; > > struct io_info4 { > - uint32_t ii_count; > + uint64_t ii_count; > uint64_t ii_bytes; > }; > > @@ -3088,6 +3160,7 @@ union nfs_argop4 switch (nfs_opnum4 argop) { > case OP_READ_PLUS: READ_PLUS4args opread_plus; > case OP_SEEK: SEEK4args opseek; > case OP_WRITE_SAME: WRITE_SAME4args opwrite_same; > + case OP_CLONE: CLONE4args opclone; > > /* Operations not new to NFSv4.1 */ > case OP_ILLEGAL: void; > @@ -3216,6 +3289,7 @@ union nfs_resop4 switch (nfs_opnum4 resop) { > case OP_READ_PLUS: READ_PLUS4res opread_plus; > case OP_SEEK: SEEK4res opseek; > case OP_WRITE_SAME: WRITE_SAME4res opwrite_same; > + case OP_CLONE: CLONE4res opclone; > > /* Operations not new to NFSv4.1 */ > case OP_ILLEGAL: ILLEGAL4res opillegal; > -- > 2.4.3 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] NFSD: Encode security label as an array 2015-07-30 12:05 ` Kinglong Mee 2015-07-30 12:13 ` [PATCH v2] 4.1 xdrdef: Update nfs4.x to the latest dot-x-38.txt Kinglong Mee @ 2015-07-30 14:22 ` Kinglong Mee 2015-07-30 14:22 ` [PATCH] NFS: Decode " Kinglong Mee 2015-07-30 15:48 ` [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 J. Bruce Fields 3 siblings, 0 replies; 8+ messages in thread From: Kinglong Mee @ 2015-07-30 14:22 UTC (permalink / raw) To: J. Bruce Fields Cc: linux-nfs@vger.kernel.org, tigran.mkrtchyan, kinglongmee, Trond Myklebust According at, https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-38#section-12.2.4 "The FATTR4_SEC_LABEL contains an array of two components with the first component being an LFS." Only supports one security label now. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> --- fs/nfsd/nfs4xdr.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 5463385..fac05f9 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -2151,10 +2151,11 @@ nfsd4_encode_security_label(struct xdr_stream *xdr, struct svc_rqst *rqstp, { __be32 *p; - p = xdr_reserve_space(xdr, len + 4 + 4 + 4); + p = xdr_reserve_space(xdr, len + 16); if (!p) return nfserr_resource; + *p++ = cpu_to_be32(1); /* Supports only one security label now */ /* * For now we use a 0 here to indicate the null translation; in * the future we may place a call to translation code here. -- 2.4.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH] NFS: Decode security label as an array 2015-07-30 12:05 ` Kinglong Mee 2015-07-30 12:13 ` [PATCH v2] 4.1 xdrdef: Update nfs4.x to the latest dot-x-38.txt Kinglong Mee 2015-07-30 14:22 ` [PATCH] NFSD: Encode security label as an array Kinglong Mee @ 2015-07-30 14:22 ` Kinglong Mee 2015-07-30 15:48 ` [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 J. Bruce Fields 3 siblings, 0 replies; 8+ messages in thread From: Kinglong Mee @ 2015-07-30 14:22 UTC (permalink / raw) To: Trond Myklebust Cc: J. Bruce Fields, linux-nfs@vger.kernel.org, tigran.mkrtchyan, kinglongmee According at, https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-38#section-12.2.4 "The FATTR4_SEC_LABEL contains an array of two components with the first component being an LFS." So, the security label returned from server should be stored in an array. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> --- fs/nfs/nfs4xdr.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index 558cd65d..d8a35d2 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -4114,17 +4114,21 @@ static int decode_attr_security_label(struct xdr_stream *xdr, uint32_t *bitmap, if (unlikely(bitmap[2] & (FATTR4_WORD2_SECURITY_LABEL - 1U))) return -EIO; if (likely(bitmap[2] & FATTR4_WORD2_SECURITY_LABEL)) { - p = xdr_inline_decode(xdr, 4); + uint32_t dummy; + + p = xdr_inline_decode(xdr, 16); if (unlikely(!p)) goto out_overflow; - lfs = be32_to_cpup(p++); - p = xdr_inline_decode(xdr, 4); - if (unlikely(!p)) + + dummy = be32_to_cpup(p++); + if (dummy != 1) { + printk(KERN_WARNING "%s: More than one labels (%u)!", + __func__, dummy); goto out_overflow; + } + + lfs = be32_to_cpup(p++); pi = be32_to_cpup(p++); - p = xdr_inline_decode(xdr, 4); - if (unlikely(!p)) - goto out_overflow; len = be32_to_cpup(p++); p = xdr_inline_decode(xdr, len); if (unlikely(!p)) -- 2.4.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 2015-07-30 12:05 ` Kinglong Mee ` (2 preceding siblings ...) 2015-07-30 14:22 ` [PATCH] NFS: Decode " Kinglong Mee @ 2015-07-30 15:48 ` J. Bruce Fields 3 siblings, 0 replies; 8+ messages in thread From: J. Bruce Fields @ 2015-07-30 15:48 UTC (permalink / raw) To: Kinglong Mee; +Cc: linux-nfs@vger.kernel.org, tigran.mkrtchyan On Thu, Jul 30, 2015 at 08:05:32PM +0800, Kinglong Mee wrote: > On 7/30/2015 03:37, J. Bruce Fields wrote: > > On Tue, Jul 28, 2015 at 07:46:35PM +0800, Kinglong Mee wrote: > >> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> > >> --- > > > > See nfs4.1/xdrdef/README and please update that README and nfs4.x.diff > > too if necessary (and report to nfsv4@ietf.org if this is still a bug in > > the minorversion 2 draft). > > Description at, > https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-38#section-12.2.4 > > "The FATTR4_SEC_LABEL contains an array of two components with the > first component being an LFS." > > It seems both nfs server and client have wrong implement, not the rfc's bug. It looks like an rfc bug to me. Doesn't it have conflicting definitions for sec_label4? --b. > > xdrdef/nfs4.x is out of date, just update it. > > thanks, > Kinglong Mee > > > > > --b. > > > >> nfs4.1/xdrdef/nfs4.x | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/nfs4.1/xdrdef/nfs4.x b/nfs4.1/xdrdef/nfs4.x > >> index 024e0b4..cb3db7e 100644 > >> --- a/nfs4.1/xdrdef/nfs4.x > >> +++ b/nfs4.1/xdrdef/nfs4.x > >> @@ -852,7 +852,7 @@ typedef change_policy4 fattr4_change_policy; > >> typedef uint64_t fattr_space_freed; > >> typedef change_attr_type4 > >> fattr4_change_attr_type; > >> -typedef sec_label4 fattr_sec_label<>; > >> +typedef sec_label4 fattr4_sec_label; > >> > >> %/* > >> % * REQUIRED Attributes > >> -- > >> 2.4.3 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-08-18 19:27 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-07-28 11:46 [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 Kinglong Mee 2015-07-29 19:37 ` J. Bruce Fields 2015-07-30 12:05 ` Kinglong Mee 2015-07-30 12:13 ` [PATCH v2] 4.1 xdrdef: Update nfs4.x to the latest dot-x-38.txt Kinglong Mee 2015-08-18 19:27 ` J. Bruce Fields 2015-07-30 14:22 ` [PATCH] NFSD: Encode security label as an array Kinglong Mee 2015-07-30 14:22 ` [PATCH] NFS: Decode " Kinglong Mee 2015-07-30 15:48 ` [PATCH 3/4] 4.1 xdrdef: Fix bad define of sec_label4 J. Bruce Fields
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).