summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-08-20 08:15:23 +0000
committerkib <kib@FreeBSD.org>2014-08-20 08:15:23 +0000
commitc3baa63a488e7e3f7af427edcb3604b9643e05b2 (patch)
treec33dc5122f282d755385976b9eacf8beb97ab2bb /sys/ufs
parent37cbc4993df1d7a657babcfe1c1fe00f2659060e (diff)
downloadFreeBSD-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')
-rw-r--r--sys/ufs/ufs/ufs_vnops.c9
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);
}
OpenPOWER on IntegriCloud