]> git.ipfire.org Git - thirdparty/linux.git/commit
nfsd: use i_wrlock instead of rcu for nfsdfs i_private
authorJ. Bruce Fields <bfields@redhat.com>
Thu, 15 Aug 2019 01:57:37 +0000 (21:57 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 15 Aug 2019 18:53:02 +0000 (14:53 -0400)
commitdc46bba709cfb45e4b2d40cf45aaeacb82690504
tree7fafbda8473a01d1f793735ac9ed4d1f03796887
parentd6846bfbeeac873d85f32bd2b988fa94c89dbcb8
nfsd: use i_wrlock instead of rcu for nfsdfs i_private

synchronize_rcu() gets called multiple times each time a client is
destroyed.  If the laundromat thread has a lot of clients to destroy,
the delay can be noticeable.  This was causing pynfs test RENEW3 to
fail.

We could embed an rcu_head in each inode and do the kref_put in an rcu
callback.  But simplest is just to take a lock here.

(I also wonder if the laundromat thread would be better replaced by a
bunch of scheduled work or timers or something.)

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfsctl.c