All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Frank Filz" <ffilzlnx@mindspring.com>
To: "'Calum Mackay'" <calum.mackay@oracle.com>,
	"'Jeff Layton'" <jlayton@kernel.org>
Cc: <bfields@fieldses.org>, <linux-nfs@vger.kernel.org>,
	"'Frank Filz'" <ffilz@redhat.com>
Subject: RE: [pynfs PATCH v2 5/5] LOCK24: fix the lock_seqid in second lock request
Date: Fri, 14 Apr 2023 07:41:25 -0700	[thread overview]
Message-ID: <082c01d96edf$311da8d0$9358fa70$@mindspring.com> (raw)
In-Reply-To: <c82e4b32-5df7-20c3-d0a8-4a30b9ae4482@oracle.com>



> -----Original Message-----
> From: Calum Mackay [mailto:calum.mackay@oracle.com]
> Sent: Thursday, April 13, 2023 11:35 AM
> To: Frank Filz <ffilzlnx@mindspring.com>; 'Jeff Layton' <jlayton@kernel.org>
> Cc: Calum Mackay <calum.mackay@oracle.com>; bfields@fieldses.org; linux-
> nfs@vger.kernel.org; 'Frank Filz' <ffilz@redhat.com>
> Subject: Re: [pynfs PATCH v2 5/5] LOCK24: fix the lock_seqid in second lock
> request
> 
> Now that I have some repo space (thank you Trond), I am putting things
> together…
> 
> On 13/03/2023 6:51 pm, Frank Filz wrote:
> > Looks good to me, tested against Ganesha and the updated patch passes.
> 
> Frank, may I add your Tested-by:, for 5/5 please?

Yes, definitely.

Frank

Tested-by: Frank Filz <ffilzlnx@mindspring.com>
> 
> cheers,
> calum.
> 
> 
> >
> > Frank
> >
> >> -----Original Message-----
> >> From: Jeff Layton [mailto:jlayton@kernel.org]
> >> Sent: Monday, March 13, 2023 4:24 AM
> >> To: calum.mackay@oracle.com
> >> Cc: bfields@fieldses.org; ffilzlnx@mindspring.com;
> > linux-nfs@vger.kernel.org;
> >> Frank Filz <ffilz@redhat.com>
> >> Subject: [pynfs PATCH v2 5/5] LOCK24: fix the lock_seqid in second
> >> lock
> > request
> >>
> >> This test currently fails against Linux nfsd, but I think it's the
> >> test
> > that's wrong. It
> >> basically does:
> >>
> >> open for read
> >> read lock
> >> unlock
> >> open upgrade
> >> write lock
> >>
> >> The write lock above is sent with a lock_seqid of 0, which is wrong.
> >> RFC7530/16.10.5 says:
> >>
> >>     o  In the case in which the state has been created and the [new
> >>        lockowner] boolean is true, the server rejects the request with the
> >>        error NFS4ERR_BAD_SEQID.  The only exception is where there is a
> >>        retransmission of a previous request in which the boolean was
> >>        true.  In this case, the lock_seqid will match the original
> >>        request, and the response will reflect the final case, below.
> >>
> >> Since the above is not a retransmission, knfsd is correct to reject
> >> this
> > call. This
> >> patch fixes the open_sequence object to track the lock seqid and set
> >> it
> > correctly
> >> in the LOCK request.
> >>
> >> With this, LOCK24 passes against knfsd.
> >>
> >> Cc: Frank Filz <ffilz@redhat.com>
> >> Fixes: 4299316fb357 (Add LOCK24 test case to test open
> >> uprgade/downgrade
> >> scenario)
> >> Signed-off-by: Jeff Layton <jlayton@kernel.org>
> >> ---
> >>   nfs4.0/servertests/st_lock.py | 6 +++++-
> >>   1 file changed, 5 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/nfs4.0/servertests/st_lock.py
> >> b/nfs4.0/servertests/st_lock.py
> > index
> >> 468672403ffe..9d650ab017b9 100644
> >> --- a/nfs4.0/servertests/st_lock.py
> >> +++ b/nfs4.0/servertests/st_lock.py
> >> @@ -886,6 +886,7 @@ class open_sequence:
> >>           self.client = client
> >>           self.owner = owner
> >>           self.lockowner = lockowner
> >> +        self.lockseqid = 0
> >>       def open(self, access):
> >>           self.fh, self.stateid = self.client.create_confirm(self.owner,
> >>   						access=access,
> >> @@ -900,14 +901,17 @@ class open_sequence:
> >>           self.client.close_file(self.owner, self.fh, self.stateid)
> >>       def lock(self, type):
> >>           res = self.client.lock_file(self.owner, self.fh, self.stateid,
> >> -                    type=type, lockowner=self.lockowner)
> >> +                                    type=type, lockowner=self.lockowner,
> >> +                                    lockseqid=self.lockseqid)
> >>           check(res)
> >>           if res.status == NFS4_OK:
> >>               self.lockstateid = res.lockid
> >> +            self.lockseqid += 1
> >>       def unlock(self):
> >>           res = self.client.unlock_file(1, self.fh, self.lockstateid)
> >>           if res.status == NFS4_OK:
> >>               self.lockstateid = res.lockid
> >> +            self.lockseqid += 1
> >>
> >>   def testOpenUpgradeLock(t, env):
> >>       """Try open, lock, open, downgrade, close
> >> --
> >> 2.39.2
> >



  reply	other threads:[~2023-04-14 14:42 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-13 11:23 [pynfs PATCH v2 0/5] An assortment of pynfs patches Jeff Layton
2023-03-13 11:23 ` [pynfs PATCH v2 1/5] nfs4.0: add a retry loop on NFS4ERR_DELAY to compound function Jeff Layton
2023-03-13 11:23 ` [pynfs PATCH v2 2/5] examples: add a new example localhost_helper.sh script Jeff Layton
2023-03-13 11:23 ` [pynfs PATCH v2 3/5] nfs4.0/testserver.py: don't return an error when tests fail Jeff Layton
2023-03-13 11:24 ` [pynfs PATCH v2 4/5] testserver.py: add a new (special) "everything" flag Jeff Layton
2023-03-13 11:24 ` [pynfs PATCH v2 5/5] LOCK24: fix the lock_seqid in second lock request Jeff Layton
2023-03-13 18:51   ` Frank Filz
2023-03-13 21:23     ` Jeff Layton
2023-04-13 18:35     ` Calum Mackay
2023-04-14 14:41       ` Frank Filz [this message]
2023-04-14 17:24         ` Calum Mackay
2023-03-28 13:23   ` Petr Vorel
2023-03-13 16:39 ` [pynfs PATCH v2 0/5] An assortment of pynfs patches Calum Mackay

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='082c01d96edf$311da8d0$9358fa70$@mindspring.com' \
    --to=ffilzlnx@mindspring.com \
    --cc=bfields@fieldses.org \
    --cc=calum.mackay@oracle.com \
    --cc=ffilz@redhat.com \
    --cc=jlayton@kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.