svn commit: r367671 - head/sys/ufs/ffs

Konstantin Belousov kib at FreeBSD.org
Sat Nov 14 05:20:00 UTC 2020


Author: kib
Date: Sat Nov 14 05:19:59 2020
New Revision: 367671
URL: https://svnweb.freebsd.org/changeset/base/367671

Log:
  Add ffs_inode_bwrite() helper.
  
  In collaboration with:	pho
  Reviewed by:	mckusick (previous version), markj
  Tested by:	markj (syzkaller), pho
  Sponsored by:	The FreeBSD Foundation
  Differential revision:	https://reviews.freebsd.org/D26136

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

Modified: head/sys/ufs/ffs/ffs_inode.c
==============================================================================
--- head/sys/ufs/ffs/ffs_inode.c	Sat Nov 14 05:19:44 2020	(r367670)
+++ head/sys/ufs/ffs/ffs_inode.c	Sat Nov 14 05:19:59 2020	(r367671)
@@ -67,6 +67,17 @@ __FBSDID("$FreeBSD$");
 static int ffs_indirtrunc(struct inode *, ufs2_daddr_t, ufs2_daddr_t,
 	    ufs2_daddr_t, int, ufs2_daddr_t *);
 
+static void
+ffs_inode_bwrite(struct vnode *vp, struct buf *bp, int flags)
+{
+	if ((flags & IO_SYNC) != 0)
+		bwrite(bp);
+	else if (DOINGASYNC(vp))
+		bdwrite(bp);
+	else
+		bawrite(bp);
+}
+
 /*
  * Update the access, modified, and inode change times as specified by the
  * IN_ACCESS, IN_UPDATE, and IN_CHANGE flags respectively.  Write the inode
@@ -357,12 +368,7 @@ ffs_truncate(vp, length, flags, cred)
 		DIP_SET(ip, i_size, length);
 		if (bp->b_bufsize == fs->fs_bsize)
 			bp->b_flags |= B_CLUSTEROK;
-		if (flags & IO_SYNC)
-			bwrite(bp);
-		else if (DOINGASYNC(vp))
-			bdwrite(bp);
-		else
-			bawrite(bp);
+		ffs_inode_bwrite(vp, bp, flags);
 		UFS_INODE_SET_FLAG(ip, IN_SIZEMOD | IN_CHANGE | IN_UPDATE);
 		return (ffs_update(vp, waitforupdate));
 	}
@@ -478,12 +484,7 @@ ffs_truncate(vp, length, flags, cred)
 		allocbuf(bp, size);
 		if (bp->b_bufsize == fs->fs_bsize)
 			bp->b_flags |= B_CLUSTEROK;
-		if (flags & IO_SYNC)
-			bwrite(bp);
-		else if (DOINGASYNC(vp))
-			bdwrite(bp);
-		else
-			bawrite(bp);
+		ffs_inode_bwrite(vp, bp, flags);
 		UFS_INODE_SET_FLAG(ip, IN_SIZEMOD | IN_CHANGE | IN_UPDATE);
 	}
 	/*


More information about the svn-src-head mailing list