I have a 4 Node Gluster setup (Redhat 7), deployed NFS ganesha (V7-dev.4-0-g8ae799) on all
node with 1 MDS & 3 DS.
I am running nfstest_pnfs test suite which do basic compliance test
(
https://wiki.linux-nfs.org/wiki/index.php/NFStest).
For read_write tests it performs 3 stages
1. Verify traffic for file using pNFS - READ
2. Verify traffic for second file using pNFS within the same mount - READ
3. Verify traffic for first file opened again using pNFS within the same mount - WRITE
During stage 3 test expects below things which are getting failed.
1. LAYOUTGET stateid should be the previous LAYOUTGET stateid
2. GETDEVICEINFO should not be sent for the same file
3. EXCHANGE_ID should not be sent to DS(0)
4. CREATE_SESSION should not be sent to DS(0)
5. RECLAIM_COMPLETE should not be sent to DS(0)
6. LAYOUTRETURN should be sent to MDS, 1 call missing
7. LAYOUTRETURN should use the layout stateid
8. DESTROY_SESSION should be sent to DS(0) on umount
Form packet capture we could see the sequence of events …
For failure 1-5
Test Create/Open file test_pnfs_*_f_004 and does a get layout ---> Server returns
Device ID 1 (lets assume 1), test1 runs bunch of tests and completes it and does a layout
return and destroy session and destroy client ID.
Test → Open same file test_pnfs_*_f_004 and does a get layout ---> Server returns
Device ID 2 ---> This is making the nfstest_pnfs upset.
For failure 6-8
Test1 completes the test and does a close session ID and as part of close session id it is
also sending layout return and destroy session.
Test2 completes the test and does a close session ID and as part of close session id here
also it is sending layout return and destroy session.
Now Test3 when it completes the tests it is expecting 3 LAYOUT RETURN while test1 and
test2 have already sent.
Did any one observed this behaviour? If yes, how to resolve same?