Hi Chuck, I created 3 bugs: https://bugzilla.linux-nfs.org/show_bug.cgi?id=390 For the original issue I reported with FREE_ALL because I'm not sure if its fully fixed. https://bugzilla.linux-nfs.org/show_bug.cgi?id=391 For scenario A https://bugzilla.linux-nfs.org/show_bug.cgi?id=392 For scenario B/C because they are very similar Thanks, -Jan On Tue, Jul 26, 2022 at 1:34 PM Chuck Lever III <chuck.lever@xxxxxxxxxx> wrote: > > Hello Jan- > > > On Jul 26, 2022, at 1:16 PM, Jan Kasiak <j.kasiak@xxxxxxxxx> wrote: > > > > Hi all, > > > > Even after applying the above two patches, I have discovered a new set > > of NLM 4 requests that break lockd. > > > > Unfortunately, I don't have enough experience to suggest a fix, but > > would be glad to test anyone's attempt. > > > > All requests are non-blocking. > > > > Scenario A > > ========= > > lock(offset=UINT64_MAX, len=100) - GRANTED > > free_all() - never finishes and lockd thread is stuck busy looping > > > > Scenario B > > ======== > > lock(svid=1, offset=UINT64_MAX, len=100) - GRANTED > > > > test(svid=2, offset=UINT64_MAX, len=50) - DENIED > > correct, holder offset, len are (UINT64_MAX, 100) > > > > test(svid=2, offset=75, len=10) - DENIED > > wrong, because holder (offset, len) are wrong (UINT64_MAX, 100), > > because the above > > lock overflows during comparison to (49, 50) > > > > Scenario C > > ======== > > lock(svid=1, offset=UINT64_MAX, len=100) - GRANTED > > > > test(svid=2, offset=UINT64_MAX, len=50) - DENIED > > correct, holder offset, len are (UINT64_MAX, 100) > > > > unlock(svid=1, offset=UINT64_MAX, len=50) - GRANTED > > weird, because it has now created a lock at (offset=UINT64_MAX + 50, len=50) > > not sure what the correct behavior should be here - FBIG error? > > > > test(svid=2, offset=75, len=10) - DENIED > > wrong, because holder offset, len are wrong (49, 50), because the above > > unlock has overflowed the offset > > Thanks for testing. > > May I ask that you file these as three separate bugs here: > > https://bugzilla.linux-nfs.org/ > > > > -- > Chuck Lever > > >