]> git.baikalelectronics.ru Git - kernel.git/commit
NFSv4.1: Don't lose locks when a server reboots during delegation return
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 5 Feb 2013 16:43:28 +0000 (11:43 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 11 Feb 2013 20:33:12 +0000 (15:33 -0500)
commit4a0e5bf4e07629360faba22fc2e3659bce7323e7
tree5a2a62efa453f8c85299063cc83a1bd819f0778a
parent8b570dd4f38863abbebe232d4ea93d81b5880bf7
NFSv4.1: Don't lose locks when a server reboots during delegation return

If the server reboots while we are converting a delegation into
OPEN/LOCK stateids as part of a delegation return, the current code
will simply exit with an error. This causes us to lose both
delegation state and locking state (i.e. locking atomicity).

Deal with this by exposing the delegation stateid during delegation
return, so that we can recover the delegation, and then resume
open/lock recovery.

Note that not having to hold the nfs_inode->rwsem across the
calls to nfs_delegation_claim_opens() also fixes a deadlock against
the NFSv4.1 reboot recovery code.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/delegation.c
fs/nfs/delegation.h
fs/nfs/nfs4proc.c