]> git.baikalelectronics.ru Git - kernel.git/commit
nfs: don't atempt blocking locks on nfs reexports
authorJ. Bruce Fields <bfields@redhat.com>
Fri, 20 Aug 2021 21:02:04 +0000 (17:02 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Thu, 26 Aug 2021 19:32:10 +0000 (15:32 -0400)
commit5e3389759e2fd3b1e00014783809f53ae4563b6b
tree9313d3b1f40869fbba03a443df788da4799a404f
parent982c5292b8c7c87b6272ca4cfda3de64e191510f
nfs: don't atempt blocking locks on nfs reexports

NFS implements blocking locks by blocking inside its lock method.  In
the reexport case, this blocks the nfs server thread, which could lead
to deadlocks since an nfs server thread might be required to unlock the
conflicting lock.  It also causes a crash, since the nfs server thread
assumes it can free the lock when its lm_notify lock callback is called.

Ideal would be to make the nfs lock method return without blocking in
this case, but for now it works just not to attempt blocking locks.  The
difference is just that the original client will have to poll (as it
does in the v4.0 case) instead of getting a callback when the lock's
available.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Acked-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfs/export.c
fs/nfsd/nfs4state.c
include/linux/exportfs.h