* [PATCH] nfsd: Fix SP4_MACH_CRED negotiation in EXCHANGE_ID
@ 2013-08-05 19:47 Weston Andros Adamson
2013-08-05 20:42 ` J. Bruce Fields
0 siblings, 1 reply; 4+ messages in thread
From: Weston Andros Adamson @ 2013-08-05 19:47 UTC (permalink / raw)
To: bfields; +Cc: linux-nfs, Weston Andros Adamson
- don't BUG_ON() when not SP4_NONE
- calculate recv and send reserve sizes correctly
Signed-off-by: Weston Andros Adamson <dros@netapp.com>
---
fs/nfsd/nfs4proc.c | 2 +-
fs/nfsd/nfs4xdr.c | 5 ++---
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 0d4c410..419572f 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -1524,7 +1524,7 @@ static inline u32 nfsd4_write_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
static inline u32 nfsd4_exchange_id_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
{
return (op_encode_hdr_size + 2 + 1 + /* eir_clientid, eir_sequenceid */\
- 1 + 1 + 0 + /* eir_flags, spr_how, SP4_NONE (for now) */\
+ 1 + 1 + 2 + /* eir_flags, spr_how, spo_must_enforce & _allow */\
2 + /*eir_server_owner.so_minor_id */\
/* eir_server_owner.so_major_id<> */\
XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + 1 +\
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index 0c0f3ea9..c2a4701 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -3360,7 +3360,8 @@ nfsd4_encode_exchange_id(struct nfsd4_compoundres *resp, __be32 nfserr,
8 /* eir_clientid */ +
4 /* eir_sequenceid */ +
4 /* eir_flags */ +
- 4 /* spr_how (SP4_NONE) */ +
+ 4 /* spr_how */ +
+ 8 /* spo_must_enforce, spo_must_allow */ +
8 /* so_minor_id */ +
4 /* so_major_id.len */ +
(XDR_QUADLEN(major_id_sz) * 4) +
@@ -3372,8 +3373,6 @@ nfsd4_encode_exchange_id(struct nfsd4_compoundres *resp, __be32 nfserr,
WRITE32(exid->seqid);
WRITE32(exid->flags);
- /* state_protect4_r. Currently only support SP4_NONE */
- BUG_ON(exid->spa_how != SP4_NONE);
WRITE32(exid->spa_how);
switch (exid->spa_how) {
case SP4_NONE:
--
1.7.12.4 (Apple Git-37)
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] nfsd: Fix SP4_MACH_CRED negotiation in EXCHANGE_ID
2013-08-05 19:47 [PATCH] nfsd: Fix SP4_MACH_CRED negotiation in EXCHANGE_ID Weston Andros Adamson
@ 2013-08-05 20:42 ` J. Bruce Fields
2013-08-05 20:50 ` Adamson, Dros
0 siblings, 1 reply; 4+ messages in thread
From: J. Bruce Fields @ 2013-08-05 20:42 UTC (permalink / raw)
To: Weston Andros Adamson; +Cc: linux-nfs
On Mon, Aug 05, 2013 at 03:47:07PM -0400, Weston Andros Adamson wrote:
> - don't BUG_ON() when not SP4_NONE
> - calculate recv and send reserve sizes correctly
Looks good, thanks! (Ouch to that BUG_ON...).
Could I get the client-side code you're using to test this?
It's fine if it's a mess, I just want to be able to run it once and see
a mount work.
--b.
> Signed-off-by: Weston Andros Adamson <dros@netapp.com>
> ---
> fs/nfsd/nfs4proc.c | 2 +-
> fs/nfsd/nfs4xdr.c | 5 ++---
> 2 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index 0d4c410..419572f 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -1524,7 +1524,7 @@ static inline u32 nfsd4_write_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
> static inline u32 nfsd4_exchange_id_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
> {
> return (op_encode_hdr_size + 2 + 1 + /* eir_clientid, eir_sequenceid */\
> - 1 + 1 + 0 + /* eir_flags, spr_how, SP4_NONE (for now) */\
> + 1 + 1 + 2 + /* eir_flags, spr_how, spo_must_enforce & _allow */\
> 2 + /*eir_server_owner.so_minor_id */\
> /* eir_server_owner.so_major_id<> */\
> XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + 1 +\
> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> index 0c0f3ea9..c2a4701 100644
> --- a/fs/nfsd/nfs4xdr.c
> +++ b/fs/nfsd/nfs4xdr.c
> @@ -3360,7 +3360,8 @@ nfsd4_encode_exchange_id(struct nfsd4_compoundres *resp, __be32 nfserr,
> 8 /* eir_clientid */ +
> 4 /* eir_sequenceid */ +
> 4 /* eir_flags */ +
> - 4 /* spr_how (SP4_NONE) */ +
> + 4 /* spr_how */ +
> + 8 /* spo_must_enforce, spo_must_allow */ +
> 8 /* so_minor_id */ +
> 4 /* so_major_id.len */ +
> (XDR_QUADLEN(major_id_sz) * 4) +
> @@ -3372,8 +3373,6 @@ nfsd4_encode_exchange_id(struct nfsd4_compoundres *resp, __be32 nfserr,
> WRITE32(exid->seqid);
> WRITE32(exid->flags);
>
> - /* state_protect4_r. Currently only support SP4_NONE */
> - BUG_ON(exid->spa_how != SP4_NONE);
> WRITE32(exid->spa_how);
> switch (exid->spa_how) {
> case SP4_NONE:
> --
> 1.7.12.4 (Apple Git-37)
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] nfsd: Fix SP4_MACH_CRED negotiation in EXCHANGE_ID
2013-08-05 20:42 ` J. Bruce Fields
@ 2013-08-05 20:50 ` Adamson, Dros
2013-08-05 21:03 ` J. Bruce Fields
0 siblings, 1 reply; 4+ messages in thread
From: Adamson, Dros @ 2013-08-05 20:50 UTC (permalink / raw)
To: J. Bruce Fields; +Cc: <linux-nfs@vger.kernel.org>
On Aug 5, 2013, at 4:42 PM, "J. Bruce Fields" <bfields@fieldses.org>
wrote:
> On Mon, Aug 05, 2013 at 03:47:07PM -0400, Weston Andros Adamson wrote:
>> - don't BUG_ON() when not SP4_NONE
>> - calculate recv and send reserve sizes correctly
>
> Looks good, thanks! (Ouch to that BUG_ON...).
>
> Could I get the client-side code you're using to test this?
>
> It's fine if it's a mess, I just want to be able to run it once and see
> a mount work.
>
I just posted a client side patch to the list alongside this patch - it does the basic SP4_MACH_CRED negotiation and nothing else.
I'll be posting more patches implementing specific SP4_MACH_CRED features shortly, but the already posted patch should work for you.
-dros
> --b.
>
>> Signed-off-by: Weston Andros Adamson <dros@netapp.com>
>> ---
>> fs/nfsd/nfs4proc.c | 2 +-
>> fs/nfsd/nfs4xdr.c | 5 ++---
>> 2 files changed, 3 insertions(+), 4 deletions(-)
>>
>> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
>> index 0d4c410..419572f 100644
>> --- a/fs/nfsd/nfs4proc.c
>> +++ b/fs/nfsd/nfs4proc.c
>> @@ -1524,7 +1524,7 @@ static inline u32 nfsd4_write_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
>> static inline u32 nfsd4_exchange_id_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
>> {
>> return (op_encode_hdr_size + 2 + 1 + /* eir_clientid, eir_sequenceid */\
>> - 1 + 1 + 0 + /* eir_flags, spr_how, SP4_NONE (for now) */\
>> + 1 + 1 + 2 + /* eir_flags, spr_how, spo_must_enforce & _allow */\
>> 2 + /*eir_server_owner.so_minor_id */\
>> /* eir_server_owner.so_major_id<> */\
>> XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + 1 +\
>> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
>> index 0c0f3ea9..c2a4701 100644
>> --- a/fs/nfsd/nfs4xdr.c
>> +++ b/fs/nfsd/nfs4xdr.c
>> @@ -3360,7 +3360,8 @@ nfsd4_encode_exchange_id(struct nfsd4_compoundres *resp, __be32 nfserr,
>> 8 /* eir_clientid */ +
>> 4 /* eir_sequenceid */ +
>> 4 /* eir_flags */ +
>> - 4 /* spr_how (SP4_NONE) */ +
>> + 4 /* spr_how */ +
>> + 8 /* spo_must_enforce, spo_must_allow */ +
>> 8 /* so_minor_id */ +
>> 4 /* so_major_id.len */ +
>> (XDR_QUADLEN(major_id_sz) * 4) +
>> @@ -3372,8 +3373,6 @@ nfsd4_encode_exchange_id(struct nfsd4_compoundres *resp, __be32 nfserr,
>> WRITE32(exid->seqid);
>> WRITE32(exid->flags);
>>
>> - /* state_protect4_r. Currently only support SP4_NONE */
>> - BUG_ON(exid->spa_how != SP4_NONE);
>> WRITE32(exid->spa_how);
>> switch (exid->spa_how) {
>> case SP4_NONE:
>> --
>> 1.7.12.4 (Apple Git-37)
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] nfsd: Fix SP4_MACH_CRED negotiation in EXCHANGE_ID
2013-08-05 20:50 ` Adamson, Dros
@ 2013-08-05 21:03 ` J. Bruce Fields
0 siblings, 0 replies; 4+ messages in thread
From: J. Bruce Fields @ 2013-08-05 21:03 UTC (permalink / raw)
To: Adamson, Dros; +Cc: <linux-nfs@vger.kernel.org>
On Mon, Aug 05, 2013 at 08:50:06PM +0000, Adamson, Dros wrote:
>
> On Aug 5, 2013, at 4:42 PM, "J. Bruce Fields" <bfields@fieldses.org>
> wrote:
>
> > On Mon, Aug 05, 2013 at 03:47:07PM -0400, Weston Andros Adamson wrote:
> >> - don't BUG_ON() when not SP4_NONE
> >> - calculate recv and send reserve sizes correctly
> >
> > Looks good, thanks! (Ouch to that BUG_ON...).
> >
> > Could I get the client-side code you're using to test this?
> >
> > It's fine if it's a mess, I just want to be able to run it once and see
> > a mount work.
> >
>
> I just posted a client side patch to the list alongside this patch - it does the basic SP4_MACH_CRED negotiation and nothing else.
>
> I'll be posting more patches implementing specific SP4_MACH_CRED features shortly, but the already posted patch should work for you.
Oh, I see it. Thanks!
--b.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-08-05 21:03 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-05 19:47 [PATCH] nfsd: Fix SP4_MACH_CRED negotiation in EXCHANGE_ID Weston Andros Adamson
2013-08-05 20:42 ` J. Bruce Fields
2013-08-05 20:50 ` Adamson, Dros
2013-08-05 21:03 ` J. Bruce Fields
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.