diff options
author | kib <kib@FreeBSD.org> | 2014-08-20 08:15:23 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2014-08-20 08:15:23 +0000 |
commit | c3baa63a488e7e3f7af427edcb3604b9643e05b2 (patch) | |
tree | c33dc5122f282d755385976b9eacf8beb97ab2bb /sys/ufs/ufs | |
parent | 37cbc4993df1d7a657babcfe1c1fe00f2659060e (diff) | |
download | FreeBSD-src-c3baa63a488e7e3f7af427edcb3604b9643e05b2.zip FreeBSD-src-c3baa63a488e7e3f7af427edcb3604b9643e05b2.tar.gz |
Do not busy the UFS mount point inside VOP_RENAME(). The
kern_renameat() already starts write on the mp, which prevents
parallel unmount from proceed. Busying mp after vn_start_write()
deadlocks the unmount.
Reported and tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Diffstat (limited to 'sys/ufs/ufs')
-rw-r--r-- | sys/ufs/ufs/ufs_vnops.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c index c7ccc25..21d4ba4 100644 --- a/sys/ufs/ufs/ufs_vnops.c +++ b/sys/ufs/ufs/ufs_vnops.c @@ -1141,11 +1141,6 @@ ufs_rename(ap) mp = NULL; goto releout; } - error = vfs_busy(mp, 0); - if (error) { - mp = NULL; - goto releout; - } relock: /* * We need to acquire 2 to 4 locks depending on whether tvp is NULL @@ -1545,8 +1540,6 @@ unlockout: if (error == 0 && tdp->i_flag & IN_NEEDSYNC) error = VOP_FSYNC(tdvp, MNT_WAIT, td); vput(tdvp); - if (mp) - vfs_unbusy(mp); return (error); bad: @@ -1564,8 +1557,6 @@ releout: vrele(tdvp); if (tvp) vrele(tvp); - if (mp) - vfs_unbusy(mp); return (error); } |