Author: mckusick
Date: Fri Apr 10 23:58:07 2020
New Revision: 359790
URL: https://svnweb.freebsd.org/changeset/base/359790

Log:
  Inode check-hash errors were being reported after system crashes.
  Trace the cause down to journalled soft updates recovery code in
  fsck failing to recompute the check-hash after updating an inode.
  
  As inode check-hash was first introduced to UFS in FreeBSD 13,
  there is no need to MFC this commit.
  
  Reported by:  Chuck Silvers
  Sponsored by: Netflix

Modified:
  head/sbin/fsck_ffs/suj.c

Modified: head/sbin/fsck_ffs/suj.c
==============================================================================
--- head/sbin/fsck_ffs/suj.c    Fri Apr 10 23:49:34 2020        (r359789)
+++ head/sbin/fsck_ffs/suj.c    Fri Apr 10 23:58:07 2020        (r359790)
@@ -1622,6 +1622,7 @@ ino_trunc(ino_t ino, off_t size)
        }
        DIP_SET(ip, di_blocks, fsbtodb(fs, totalfrags));
        DIP_SET(ip, di_size, size);
+       ino_dirty(ino);
        /*
         * If we've truncated into the middle of a block or frag we have
         * to zero it here.  Otherwise the file could extend into
@@ -1959,6 +1960,7 @@ ino_unlinked(void)
                mode = DIP(ip, di_mode) & IFMT;
                inon = DIP(ip, di_freelink);
                DIP_SET(ip, di_freelink, 0);
+               ino_dirty(ino);
                /*
                 * XXX Should this be an errx?
                 */
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to