On Mon, Nov 02, 2009 at 05:28:02PM +0800, Mi Jinlong wrote: > Hi Trond et al: > > When i test the nfslock of NFSv3 at RHEL5.3GA (kernel: 2.6.18-128.el5), > NLM server can not process client's retransmited request correctly. > > Steps of my test likes followed: > client server > | | > step1 | open file | > open |------------------------------->| > | ok | > |<-------------------------------| > | | step2 > | -> | <- service nfslock stop > | | > step3 | WL1: write lock request{0, 0} | > fcntl |------------------------------->| > | | > | WL1_re: WL1 retransmit | > |------------------------------->| > | | > | WL1.reply ENOLCK | > |<-------------------------------| > | | step4 > | -> | <- service nfslock start > | | > step5 | WL2: write lock request{0, 0} | > fcntl |------------------------------->| > | | > | WL1_re.reply OK | > |<-------------------------------| > | WL2.reply EBLOCKD | > |<-------------------------------| > V V > > Client can not acquire for write lock any more after step4. > > Reason: > Server reply ENOLCK for WL1 to client because nfslock service stoped, I don't completely understand that part: is it because the monitor call to statd fails? > but it can not distinguish retransmited request with normal request, > so it reply OK for WL1_re to client after nfslock service start. But > fcntl client called will return when it receive WL1.reply, WL1_re.reply > will be droped at Client. So that, the lock between client and server > is different. When client send a some lock request to server again, > it will get a EBLOCKD error from Server. But, OK, I get the idea, and generic DRC code shared by nfsd and nlm makes sense to me; thanks for looking into this. --b. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html