Date: Mon, 26 Nov 2018 00:07:36 +0000 From: Rick Macklem <rmacklem@uoguelph.ca> To: Kirk McKusick <mckusick@mckusick.com> Cc: "soralx@cydem.org" <soralx@cydem.org>, "freebsd-fs@freebsd.org" <freebsd-fs@freebsd.org>, "Julian H. Stacey" <jhs@berklix.com>, Konstantin Belousov <kostikbel@gmail.com> Subject: Re: [bug] fsck refuses to repair damaged UFS using backup superblock Message-ID: <YTOPR0101MB1162D82F0211BF1FE7D6A4E1DDD60@YTOPR0101MB1162.CANPRD01.PROD.OUTLOOK.COM> In-Reply-To: <YTOPR0101MB1162816FC7EFC4E5150A7692DDD60@YTOPR0101MB1162.CANPRD01.PROD.OUTLOOK.COM> References: <YTOPR0101MB1162E62A2BA4D92D215C8983DDD60@YTOPR0101MB1162.CANPRD01.PROD.OUTLOOK.COM>, <201811251842.wAPIgEpW053136@chez.mckusick.com>, <YTOPR0101MB1162816FC7EFC4E5150A7692DDD60@YTOPR0101MB1162.CANPRD01.PROD.OUTLOOK.COM>
index | next in thread | previous in thread | raw e-mail
________________________________________
From: Rick Macklem
Sent: Sunday, November 25, 2018 6:45 PM
To: Kirk McKusick
Cc: soralx@cydem.org; freebsd-fs@freebsd.org; Julian H. Stacey; Konstantin Belousov
Subject: Re: [bug] fsck refuses to repair damaged UFS using backup superblock
Rick Macklem wrote:
[stuff snipped]
>Maybe setting all elements of fs_sparecon32[] to zeros before writing the
>superblock out would minimize these issues for the future and could be MFC'd.
>(I'm not claiming that a new FFS2 should be movable between stable/11 and
> head, but it might be a nice feature?)
Ok, it looks like the FS_METACKHASH flag was meant to handle the old->new
kernel transition. However, if I am reading the code correctly, it needs to be
checked for sooner. Here's the code snippet:
/* fetch the superblock and summary information */
812 if ((error = ffs_sbget(devvp, &fs, -1, M_UFSMNT, ffs_use_bread)) != 0)
813 goto out;
814 fs->fs_fmod = 0;
815 /* if we ran on a kernel without metadata check hashes, disable them */
816 if ((fs->fs_flags & FS_METACKHASH) == 0)
817 fs->fs_metackhash = 0;
I think ffs_sbget() calls readsuper() which calls calc_sbhash(), so lines 815-817
need to be near the top of readsuper(), I think?
rick
[more stuff snipped]
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YTOPR0101MB1162D82F0211BF1FE7D6A4E1DDD60>
