svn commit: r344302 - head/sbin/fsck_ffs

Kirk McKusick mckusick at FreeBSD.org
Tue Feb 19 20:12:13 UTC 2019


Author: mckusick
Date: Tue Feb 19 20:12:12 2019
New Revision: 344302
URL: https://svnweb.freebsd.org/changeset/base/344302

Log:
  Ensure that inode updates are properly flushed out during the first
  pass of fsck_ffs. Some changes, such as check-hash corrections were
  being lost.
  
  Reported by: Michael Tuexen (tuexen@)
  Tested by:   Michael Tuexen (tuexen@)
  MFC after:   3 days

Modified:
  head/sbin/fsck_ffs/inode.c

Modified: head/sbin/fsck_ffs/inode.c
==============================================================================
--- head/sbin/fsck_ffs/inode.c	Tue Feb 19 19:57:55 2019	(r344301)
+++ head/sbin/fsck_ffs/inode.c	Tue Feb 19 20:12:12 2019	(r344302)
@@ -349,9 +349,11 @@ getnextinode(ino_t inumber, int rebuildcg)
 			lastinum += fullcnt;
 		}
 		/*
+		 * Flush old contents in case they have been updated.
 		 * If getblk encounters an error, it will already have zeroed
 		 * out the buffer, so we do not need to do so here.
 		 */
+		flush(fswritefd, &inobuf);
 		getblk(&inobuf, blk, size);
 		nextinop = inobuf.b_un.b_buf;
 	}
@@ -461,6 +463,10 @@ void
 freeinodebuf(void)
 {
 
+	/*
+	 * Flush old contents in case they have been updated.
+	 */
+	flush(fswritefd, &inobuf);
 	if (inobuf.b_un.b_buf != NULL)
 		free((char *)inobuf.b_un.b_buf);
 	inobuf.b_un.b_buf = NULL;


More information about the svn-src-all mailing list