NFS: Fix an ABBA spinlock issue in pnfs_update_layout()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 13 Apr 2020 19:55:21 +0000 (15:55 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 13 Apr 2020 19:55:21 +0000 (15:55 -0400)
commitfbf4bcc9a8373122881909331f2f9566a128126e
tree8ab1e8a6c18cc76d2e520dc6095cbead15847f81
parent8f3d9f354286745c751374f5f1fcafee6b3f3136
NFS: Fix an ABBA spinlock issue in pnfs_update_layout()

We need to drop the inode spinlock while calling nfs4_select_rw_stateid(),
since nfs4_copy_delegation_stateid() could take the delegation lock.
Note that it is safe to do this, since all other calls to
pnfs_update_layout() for that inode will find themselves blocked by
the lock we hold on NFS_LAYOUT_FIRST_LAYOUTGET.

Fixes: fc51b1cf391d ("NFS: Beware when dereferencing the delegation cred")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/pnfs.c