diff options
author | Kirk McKusick <mckusick@FreeBSD.org> | 2002-03-14 01:21:13 +0000 |
---|---|---|
committer | Kirk McKusick <mckusick@FreeBSD.org> | 2002-03-14 01:21:13 +0000 |
commit | 9721068f95a190b02556bf3a97032c1bc66dc45b (patch) | |
tree | c513eddae57a66a172e01a1582fed9096eb59249 /sys/ufs/ffs/ffs_vnops.c | |
parent | b81b08381983c5ecc5d0112a7da27864d0be3376 (diff) | |
download | src-9721068f95a190b02556bf3a97032c1bc66dc45b.tar.gz src-9721068f95a190b02556bf3a97032c1bc66dc45b.zip |
This corrects the first of two known deadlock conditions that
come from the presence of a snapshot file.
Notes
Notes:
svn path=/head/; revision=92250
Diffstat (limited to 'sys/ufs/ffs/ffs_vnops.c')
-rw-r--r-- | sys/ufs/ffs/ffs_vnops.c | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index 78c32ea6c3a1..8f7cd8be3b6c 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -140,14 +140,6 @@ ffs_fsync(ap) int s, error, wait, passes, skipmeta; daddr_t lbn; - /* - * Snapshots have to be unlocked so they do not deadlock - * checking whether they need to copy their written buffers. - * We always hold a reference, so they cannot be removed - * out from underneath us. - */ - if (ip->i_flags & SF_SNAPSHOT) - VOP_UNLOCK(vp, 0, ap->a_td); wait = (ap->a_waitfor == MNT_WAIT); if (vn_isdisk(vp, NULL)) { lbn = INT_MAX; @@ -289,8 +281,5 @@ loop: } } splx(s); - error = UFS_UPDATE(vp, wait); - if (ip->i_flags & SF_SNAPSHOT) - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, ap->a_td); - return (error); + return (UFS_UPDATE(vp, wait)); } |