Author: mckusick
Date: Sun Nov 25 18:09:39 2018
New Revision: 340925
URL: https://svnweb.freebsd.org/changeset/base/340925

Log:
  Properly recover from superblock check-hash failures. Specifically,
  report the check-hash failure and offer to search for and use
  alternate superblocks.  Prior to this fix fsck_ffs would simply
  report the check-hash failure and exit.
  
  Reported by:  Julian H. Stacey <j...@berklix.com>
  Tested by:    Peter Holm
  Sponsored by: Netflix

Modified:
  head/sbin/fsck_ffs/setup.c

Modified: head/sbin/fsck_ffs/setup.c
==============================================================================
--- head/sbin/fsck_ffs/setup.c  Sun Nov 25 18:01:15 2018        (r340924)
+++ head/sbin/fsck_ffs/setup.c  Sun Nov 25 18:09:39 2018        (r340925)
@@ -127,7 +127,7 @@ setup(char *dev)
                }
        }
        if ((fsreadfd = open(dev, O_RDONLY)) < 0 ||
-           ufs_disk_fillout(&disk, dev) < 0) {
+           ufs_disk_fillout_blank(&disk, dev) < 0) {
                if (bkgrdflag) {
                        unlink(snapname);
                        bkgrdflag = 0;
@@ -325,10 +325,8 @@ readsb(int listerr)
        if ((ret = sbget(fsreadfd, &fs, super)) != 0) {
                switch (ret) {
                case EINVAL:
-                       fprintf(stderr, "The previous newfs operation "
-                           "on this volume did not complete.\nYou must "
-                           "complete newfs before using this volume.\n");
-                       exit(11);
+                       /* Superblock check-hash failed */
+                       return (0);
                case ENOENT:
                        if (bflag)
                                fprintf(stderr, "%jd is not a file system "
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to