Project

General

Profile

Bug #6018

Network Lock Manager (NLM) fails Connectathon lock test

Added by Gordon Ross over 5 years ago. Updated over 5 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
nfs - NFS server and client
Start date:
2015-06-20
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:

Description

Comparing the old (closed) lock manager with the current one.
With the old NLM code, this all passed (see: old-klm-pass.txt)
Here's the output from the c-thon test with the new NLM:

$ ./tlock64 /net/10.10.0.148/volumes/data/nfs/tlock
Creating parent/child synchronization pipes.

Test #1 - Test regions of an unlocked file.
    Parent: 1.1  - F_TEST  [               0,               1] PASSED.
    Parent: 1.2  - F_TEST  [               0,          ENDING] PASSED.
    Parent: 1.3  - F_TEST  [               0,7fffffffffffffff] PASSED.
    Parent: 1.4  - F_TEST  [               1,               1] PASSED.
    Parent: 1.5  - F_TEST  [               1,          ENDING] PASSED.
    Parent: 1.6  - F_TEST  [               1,7fffffffffffffff] WARNING!
    Parent: **** Expected success, returned EACCES...
    Parent: 1.7  - F_TEST  [7fffffffffffffff,               1] WARNING!
    Parent: **** Expected success, returned EACCES...
    Parent: 1.8  - F_TEST  [7fffffffffffffff,          ENDING] PASSED.
    Parent: 1.9  - F_TEST  [7fffffffffffffff,7fffffffffffffff] PASSED.

Test #2 - Try to lock the whole file.
    Parent: 2.0  - F_TLOCK [               0,          ENDING] PASSED.
    Child:  2.1  - F_TEST  [               0,               1] PASSED.
    Child:  2.2  - F_TEST  [               0,          ENDING] PASSED.
    Child:  2.3  - F_TEST  [               0,7fffffffffffffff] PASSED.
    Child:  2.4  - F_TEST  [               1,               1] PASSED.
    Child:  2.5  - F_TEST  [               1,          ENDING] PASSED.
    Child:  2.6  - F_TEST  [               1,7fffffffffffffff] PASSED.
    Child:  2.7  - F_TEST  [7fffffffffffffff,               1] PASSED.
    Child:  2.8  - F_TEST  [7fffffffffffffff,          ENDING] PASSED.
    Child:  2.9  - F_TEST  [7fffffffffffffff,7fffffffffffffff] PASSED.
    Parent: 2.10 - F_ULOCK [               0,          ENDING] PASSED.

Test #3 - Try to lock just the 1st byte.
    Parent: 3.0  - F_TLOCK [               0,               1] PASSED.
    Child:  3.1  - F_TEST  [               0,               1] PASSED.
    Child:  3.2  - F_TEST  [               0,          ENDING] PASSED.
    Child:  3.3  - F_TEST  [               1,               1] PASSED.
    Child:  3.4  - F_TEST  [               1,          ENDING] PASSED.
    Parent: 3.5  - F_ULOCK [               0,               1] PASSED.

Test #4 - Try to lock the 2nd byte, test around it.
    Parent: 4.0  - F_TLOCK [               1,               1] PASSED.
    Child:  4.1  - F_TEST  [               0,               1] PASSED.
    Child:  4.2  - F_TEST  [               0,               2] PASSED.
    Child:  4.3  - F_TEST  [               0,          ENDING] PASSED.
    Child:  4.4  - F_TEST  [               1,               1] PASSED.
    Child:  4.5  - F_TEST  [               1,               2] PASSED.
    Child:  4.6  - F_TEST  [               1,          ENDING] PASSED.
    Child:  4.7  - F_TEST  [               2,               1] PASSED.
    Child:  4.8  - F_TEST  [               2,               2] PASSED.
    Child:  4.9  - F_TEST  [               2,          ENDING] PASSED.
    Parent: 4.10 - F_ULOCK [               1,               1] PASSED.

Test #5 - Try to lock 1st and 2nd bytes, test around them.
    Parent: 5.0  - F_TLOCK [               0,               1] PASSED.
    Parent: 5.1  - F_TLOCK [               2,               1] PASSED.
    Child:  5.2  - F_TEST  [               0,               1] PASSED.
    Child:  5.3  - F_TEST  [               0,               2] PASSED.
    Child:  5.4  - F_TEST  [               0,          ENDING] PASSED.
    Child:  5.5  - F_TEST  [               1,               1] PASSED.
    Child:  5.6  - F_TEST  [               1,               2] PASSED.
    Child:  5.7  - F_TEST  [               1,          ENDING] PASSED.
    Child:  5.8  - F_TEST  [               2,               1] PASSED.
    Child:  5.9  - F_TEST  [               2,               2] PASSED.
    Child:  5.10 - F_TEST  [               2,          ENDING] PASSED.
    Child:  5.11 - F_TEST  [               3,               1] PASSED.
    Child:  5.12 - F_TEST  [               3,               2] PASSED.
    Child:  5.13 - F_TEST  [               3,          ENDING] PASSED.
    Parent: 5.14 - F_ULOCK [               0,               1] PASSED.
    Parent: 5.15 - F_ULOCK [               2,               1] PASSED.

Test #6 - Try to lock the MAXEOF byte.
    Parent: 6.0  - F_TLOCK [7fffffffffffffff,               1] WARNING!
    Parent: **** Expected success, returned EAGAIN...
    Child:  6.1  - F_TEST  [7ffffffffffffffe,               1] PASSED.
    Child:  6.2  - F_TEST  [7ffffffffffffffe,               2] WARNING!
    Child:  **** Expected EAGAIN, returned EACCES...
    Child:  **** Probably BSD semantics instead of SVID.
    Child:  6.3  - F_TEST  [7ffffffffffffffe,          ENDING] FAILED!
    Child:  **** Expected EAGAIN, returned success...
    Child:  **** Probably implementation error.

**  CHILD pass 1 results: 35/35 pass, 1/1 warn, 1/1 fail (pass/total).
    Parent: Child died

** PARENT pass 1 results: 17/17 pass, 3/3 warn, 0/0 fail (pass/total).

The Connectathon test are here:
https://bitbucket.org/gwr/cthon-nfs-tests-k
(and many other places)
Run the tlock test like this:

cd test
make tlock64
./tlock64  /some/nfs3/mount


Files

old-klm-pass.txt (10.4 KB) old-klm-pass.txt Gordon Ross, 2015-06-20 12:36 AM
#1

Updated by Gordon Ross over 5 years ago

  • Description updated (diff)

Also available in: Atom PDF