]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC: r224606
authorrmacklem <rmacklem@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 17 Aug 2011 20:55:56 +0000 (20:55 +0000)
committerrmacklem <rmacklem@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 17 Aug 2011 20:55:56 +0000 (20:55 +0000)
commit1ff586eb4fba8decc976afe6f872509fc00f1feb
treefbf7ba6de1dcf758df29522b3f31cebb09b8f7e4
parent758e1b4a45861c5f0125548781ee41761bb2f236
MFC: r224606
Fix a LOR in the NFS client which could cause a deadlock.
This was reported to the mailing list freebsd-net@freebsd.org
on July 21, 2011 under the subject "LOR with nfsclient sillyrename".
The LOR occurred when nfs_inactive() called vrele(sp->s_dvp)
while holding the vnode lock on the file in s_dvp. This patch
modifies the client so that it performs the vrele(sp->s_dvp)
as a separate task to avoid the LOR. This fix was discussed
with jhb@ and kib@, who both proposed variations of it.

git-svn-id: svn://svn.freebsd.org/base/stable/8@224951 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/fs/nfsclient/nfs_clnode.c
sys/fs/nfsclient/nfsnode.h