diff options
author | Will Andrews <will@FreeBSD.org> | 2013-03-23 16:34:56 +0000 |
---|---|---|
committer | Will Andrews <will@FreeBSD.org> | 2013-03-23 16:34:56 +0000 |
commit | 58567a1b4ea2125c75587cfc1ac7c39e4007d302 (patch) | |
tree | 0e59fb8fb6021c7f63840c3e3368359a0b1ab82b /sys/sys/bio.h | |
parent | fdbc71742bd6dd1d9f117a3144d33611b0509b43 (diff) | |
download | src-58567a1b4ea2125c75587cfc1ac7c39e4007d302.tar.gz src-58567a1b4ea2125c75587cfc1ac7c39e4007d302.zip |
ZFS: Fix a panic while unmounting a busy filesystem.
This particular scenario was easily reproduced using a NFS export. When the
first 'zfs unmount' occurred, it returned EBUSY via this path, while
vflush() had flushed references on the filesystem's root vnode, which in
turn caused its v_interlock to be destroyed. The next time 'zfs unmount'
was called, vflush() tried to obtain this lock, which caused this panic.
Since vflush() on FreeBSD is a definitive call, there is no need to check
vfsp->vfs_count after it completes. Simply #ifdef sun this check.
Submitted by: avg
Reviewed by: avg
Approved by: ken (mentor)
MFC after: 1 month
Notes
Notes:
svn path=/head/; revision=248653
Diffstat (limited to 'sys/sys/bio.h')
0 files changed, 0 insertions, 0 deletions