summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_vnops.c
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1998-03-21 05:16:09 +0000
committerdyson <dyson@FreeBSD.org>1998-03-21 05:16:09 +0000
commit2c31fae3ef513c6fe555131dfef7a17d7b03a506 (patch)
tree83e3a5115eaf4d2cbcf3f0a0cc503c9e8baf4cbf /sys/ufs/ffs/ffs_vnops.c
parentae412a3109e0a2f7ec85f4d46cccb9915e8bdbe9 (diff)
downloadFreeBSD-src-2c31fae3ef513c6fe555131dfef7a17d7b03a506.zip
FreeBSD-src-2c31fae3ef513c6fe555131dfef7a17d7b03a506.tar.gz
Softdep_sync_metadata appears to expect that it is called at splbio,
so make it so...
Diffstat (limited to 'sys/ufs/ffs/ffs_vnops.c')
-rw-r--r--sys/ufs/ffs/ffs_vnops.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 8e2c218..0f7f210 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vnops.c 8.15 (Berkeley) 5/14/95
- * $Id: ffs_vnops.c,v 1.44 1998/03/08 09:59:10 julian Exp $
+ * $Id: ffs_vnops.c,v 1.45 1998/03/19 22:49:44 dyson Exp $
*/
#include <sys/param.h>
@@ -214,19 +214,24 @@ loop2:
splx(s);
if (ap->a_waitfor == MNT_WAIT) {
+
s = splbio();
- while (vp->v_numoutput) {
- vp->v_flag |= VBWAIT;
- (void) tsleep((caddr_t)&vp->v_numoutput, PRIBIO + 4, "ffsfsn", 0);
+ if (!DOINGSOFTDEP(vp)) {
+ while (vp->v_numoutput) {
+ vp->v_flag |= VBWAIT;
+ (void) tsleep((caddr_t)&vp->v_numoutput, PRIBIO + 4, "ffsfsn", 0);
+ }
+ } else {
+ /*
+ * Ensure that any filesystem metatdata associated
+ * with the vnode has been written.
+ */
+ if ((error = softdep_sync_metadata(ap)) != 0) {
+ splx(s);
+ return (error);
+ }
}
- /*
- * Ensure that any filesystem metatdata associated
- * with the vnode has been written.
- */
- splx(s);
- if ((error = softdep_sync_metadata(ap)) != 0)
- return (error);
- s = splbio();
+
if (vp->v_dirtyblkhd.lh_first) {
/*
* Block devices associated with filesystems may
OpenPOWER on IntegriCloud