Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Mar 2012 20:26:20 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r232836 - head/sys/ufs/ffs
Message-ID:  <201203112026.q2BKQKSK025803@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Sun Mar 11 20:26:19 2012
New Revision: 232836
URL: http://svn.freebsd.org/changeset/base/232836

Log:
  Do schedule delayed writes for async mounts.
  While there, make some style adjustments, like missed () around
  return values.
  
  Submitted by:	bde
  Reviewed by:	mckusick
  Tested by:	pho
  MFC after:	2 weeks

Modified:
  head/sys/ufs/ffs/ffs_inode.c

Modified: head/sys/ufs/ffs/ffs_inode.c
==============================================================================
--- head/sys/ufs/ffs/ffs_inode.c	Sun Mar 11 20:23:46 2012	(r232835)
+++ head/sys/ufs/ffs/ffs_inode.c	Sun Mar 11 20:26:19 2012	(r232836)
@@ -244,7 +244,7 @@ ffs_truncate(vp, length, flags, cred, td
 				ip->i_din2->di_extb[i] = 0;
 			}
 			ip->i_flag |= IN_CHANGE;
-			if ((error = ffs_update(vp, 1)))
+			if ((error = ffs_update(vp, !DOINGASYNC(vp))))
 				return (error);
 			for (i = 0; i < NXADDR; i++) {
 				if (oldblks[i] == 0)
@@ -270,13 +270,13 @@ ffs_truncate(vp, length, flags, cred, td
 		ip->i_flag |= IN_CHANGE | IN_UPDATE;
 		if (needextclean)
 			goto extclean;
-		return ffs_update(vp, 1);
+		return (ffs_update(vp, !DOINGASYNC(vp)));
 	}
 	if (ip->i_size == length) {
 		ip->i_flag |= IN_CHANGE | IN_UPDATE;
 		if (needextclean)
 			goto extclean;
-		return ffs_update(vp, 0);
+		return (ffs_update(vp, 0));
 	}
 	if (fs->fs_ronly)
 		panic("ffs_truncate: read-only filesystem");
@@ -303,10 +303,12 @@ ffs_truncate(vp, length, flags, cred, td
 			bp->b_flags |= B_CLUSTEROK;
 		if (flags & IO_SYNC)
 			bwrite(bp);
+		else if (DOINGASYNC(vp))
+			bdwrite(bp);
 		else
 			bawrite(bp);
 		ip->i_flag |= IN_CHANGE | IN_UPDATE;
-		return ffs_update(vp, 1);
+		return (ffs_update(vp, !DOINGASYNC(vp)));
 	}
 	if (DOINGSOFTDEP(vp)) {
 		if (softdeptrunc == 0 && journaltrunc == 0) {
@@ -378,6 +380,8 @@ ffs_truncate(vp, length, flags, cred, td
 			bp->b_flags |= B_CLUSTEROK;
 		if (flags & IO_SYNC)
 			bwrite(bp);
+		else if (DOINGASYNC(vp))
+			bdwrite(bp);
 		else
 			bawrite(bp);
 	}
@@ -411,7 +415,7 @@ ffs_truncate(vp, length, flags, cred, td
 			DIP_SET(ip, i_db[i], 0);
 	}
 	ip->i_flag |= IN_CHANGE | IN_UPDATE;
-	allerror = ffs_update(vp, 1);
+	allerror = ffs_update(vp, !DOINGASYNC(vp));
 	
 	/*
 	 * Having written the new inode to disk, save its new configuration
@@ -543,7 +547,7 @@ extclean:
 		softdep_journal_freeblocks(ip, cred, length, IO_EXT);
 	else
 		softdep_setup_freeblocks(ip, length, IO_EXT);
-	return ffs_update(vp, MNT_WAIT);
+	return (ffs_update(vp, !DOINGASYNC(vp)));
 }
 
 /*
@@ -624,7 +628,7 @@ ffs_indirtrunc(ip, lbn, dbn, lastbn, lev
 			else
 				bap2[i] = 0;
 		if (DOINGASYNC(vp)) {
-			bawrite(bp);
+			bdwrite(bp);
 		} else {
 			error = bwrite(bp);
 			if (error)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203112026.q2BKQKSK025803>