Apparently, On Thu, Jan 09, 2003 at 03:29:43PM -0800,
Marcel Moolenaar said words to the effect of;
> On Thu, Jan 09, 2003 at 01:12:30AM -0800, Marcel Moolenaar wrote:
> >
> > GPT based systems are unable to mount the root file system. I
> > haven't had the time to dig into this, but we must be making
> > assumptions we previously didn't make. In any case ia64 is
> > hosed. More to come...
>
> Ok, after digging a bit I noticed that the super block layout
> has changed in a way that makes it incompatible with previous
> super blocks. It appears to be the alignment of fs_uuid on
> revision 1.36 of sys/ufs/ffs/fs.h.
>
> Previously:
> Sizeof superblock=1376
> Offset of magic=1372
>
> Now:
> Sizeof superblock=1384
> Offset of magic=1380
It might be worth putting in some CTASSERTs to verify that the size of
the superblock and/or offsets of important fields don't change. This
would give 64 bit people a heads up before they try to boot a broken
kernel, and would make compiling a kernel on one of the reference boxes
more useful for people who don't have a 64 bit machine for runtime
testing.
Jake
>
> This typically results in not being able to fsck the file system
> with a post-change fsck on a pre-change kernel and not being able
> to mount the file system with a post-change kernel.
>
> The following patch fixes the problem (and fixes the misuse of
> uuid for something that is not universally unique):
>
> Index: fs.h
> ===================================================================
> RCS file: /home/ncvs/src/sys/ufs/ffs/fs.h,v
> retrieving revision 1.36
> diff -u -r1.36 fs.h
> --- fs.h 8 Jan 2003 22:53:54 -0000 1.36
> +++ fs.h 9 Jan 2003 23:23:28 -0000
> @@ -117,7 +117,7 @@
> * in fs_fsmnt. MAXMNTLEN defines the amount of space allocated in
> * the super block for this name.
> */
> -#define MAXMNTLEN 472
> +#define MAXMNTLEN 468
>
> /*
> * The volume name for this filesystem is maintained in fs_volname.
> @@ -311,7 +311,8 @@
> int8_t fs_old_flags; /* old FS_ flags */
> u_char fs_fsmnt[MAXMNTLEN]; /* name mounted on */
> u_char fs_volname[MAXVOLLEN]; /* volume name */
> - u_int64_t fs_uuid; /* system-wide unique uid */
> + u_int64_t fs_swuid; /* system-wide unique id */
> + int32_t fs_pad;
> /* these fields retain the current block allocation info */
> int32_t fs_cgrotor; /* last cg searched */
> void *fs_ocsp[NOCSPTRS]; /* padding; was list of fs_cs buffers */
>
> --
> Marcel Moolenaar USPA: A-39004 [EMAIL PROTECTED]
>
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-current" in the body of the message
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message