Skip to content
  • Rick Macklem's avatar
    nfscl: Fix another deadlock related to the NFSv4 clientID lock · b82168e6
    Rick Macklem authored
    Without this patch, it is possible to hang the NFSv4 client,
    when a rename/remove is being done on a file where the client
    holds a delegation, if pNFS is being used.  For a delegation
    to be returned, dirty data blocks must be flushed to the NFSv4
    server.  When pNFS is in use, a shared lock on the clientID
    must be acquired while doing a write to the DS(s).
    However, if rename/remove is doing the delegation return
    an exclusive lock will be acquired on the clientID, preventing
    the write to the DS(s) from acquiring a shared lock on the clientID.
    
    This patch stops rename/remove from doing a delegation return
    if pNFS is enabled.  Since doing delegation return in the same
    compound as rename/remove is only an optimization, not doing
    so should not cause problems.
    
    This problem was detected during a recent NFSv4 interoperability
    testing event held by the IETF working group.
    
    MFC after:	1 week
    b82168e6