Date: Tue, 27 Jan 2004 14:53:31 +0800 (CST) From: Xin LI <delphij@frontfree.net> To: FreeBSD-gnats-submit@FreeBSD.org Cc: mckusick@FreeBSD.org Subject: bin/61981: [PATCH] bring incompletely initialized magic to UFS1 Message-ID: <20040127065331.43F7611AE7@beastie.frontfree.net> Resent-Message-ID: <200401270700.i0R70V2c036949@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 61981 >Category: bin >Synopsis: [PATCH] bring incompletely initialized magic to UFS1 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Mon Jan 26 23:00:31 PST 2004 >Closed-Date: >Last-Modified: >Originator: Xin LI >Release: FreeBSD 5.2-RELEASE i386 >Organization: The FreeBSD Simplified Chinese Project >Environment: System: FreeBSD beastie.frontfree.net 5.2-RELEASE FreeBSD 5.2-RELEASE #16: Sat Jan 10 15:24:09 CST 2004 delphij@beastie.frontfree.net:/usr/obj/usr/src/sys/BEASTIE i386 >Description: The attached is a proposal patch to make it possible to mark UFS1 as "incompletely initialized" when newfs(8) did not have it actually initialized. To implement this, I have borrowed the "bad UFS2" magic number. Please review this patch. Frankly I am not sure if this is useful in most circumstances, but a "incomplete" flag is really useful for certain needs. >How-To-Repeat: >Fix: Apply the attached patch to src/ tree. --- patch2 begins here --- Index: sbin/fsck_ffs/setup.c =================================================================== RCS file: /home/mirror/freebsd/ncvs/src/sbin/fsck_ffs/setup.c,v retrieving revision 1.46 diff -u -r1.46 setup.c --- sbin/fsck_ffs/setup.c 26 Jan 2004 15:05:30 -0000 1.46 +++ sbin/fsck_ffs/setup.c 27 Jan 2004 03:48:07 -0000 @@ -310,7 +310,7 @@ super = bflag; if ((bread(fsreadfd, (char *)&sblock, super, (long)SBLOCKSIZE))) return (0); - if (sblock.fs_magic == FS_BAD2_MAGIC) { + if (sblock.fs_magic == FS_BAD_MAGIC) { fprintf(stderr, BAD_MAGIC_MSG); exit(11); } @@ -326,7 +326,7 @@ if ((bread(fsreadfd, (char *)&sblock, super, (long)SBLOCKSIZE))) return (0); - if (sblock.fs_magic == FS_BAD2_MAGIC) { + if (sblock.fs_magic == FS_BAD_MAGIC) { fprintf(stderr, BAD_MAGIC_MSG); exit(11); } Index: sbin/newfs/mkfs.c =================================================================== RCS file: /home/mirror/freebsd/ncvs/src/sbin/newfs/mkfs.c,v retrieving revision 1.83 diff -u -r1.83 mkfs.c --- sbin/newfs/mkfs.c 27 Nov 2003 01:19:23 -0000 1.83 +++ sbin/newfs/mkfs.c 27 Jan 2004 04:17:01 -0000 @@ -238,8 +238,14 @@ } sblock.fs_fsbtodb = ilog2(sblock.fs_fsize / sectorsize); sblock.fs_size = fssize = dbtofsb(&sblock, fssize); + + /* + * Before the filesystem is finally initialized, mark it + * as incompletely initialized. + */ + sblock.fs_magic = FS_BAD_MAGIC; + if (Oflag == 1) { - sblock.fs_magic = FS_UFS1_MAGIC; sblock.fs_sblockloc = SBLOCK_UFS1; sblock.fs_nindir = sblock.fs_bsize / sizeof(ufs1_daddr_t); sblock.fs_inopb = sblock.fs_bsize / sizeof(struct ufs1_dinode); @@ -259,7 +265,6 @@ sblock.fs_old_postblformat = 1; sblock.fs_old_nrpos = 1; } else { - sblock.fs_magic = FS_BAD2_MAGIC; sblock.fs_sblockloc = SBLOCK_UFS2; sblock.fs_nindir = sblock.fs_bsize / sizeof(ufs2_daddr_t); sblock.fs_inopb = sblock.fs_bsize / sizeof(struct ufs2_dinode); @@ -457,8 +462,8 @@ } if (Eflag == 2) printf("** Leaving BAD MAGIC on Eflag 2\n"); - else if (Oflag != 1) - sblock.fs_magic = FS_UFS2_MAGIC; + else + sblock.fs_magic = (Oflag != 1) ? FS_UFS2_MAGIC : FS_UFS1_MAGIC; /* * Now build the cylinders group blocks and Index: sys/ufs/ffs/fs.h =================================================================== RCS file: /home/mirror/freebsd/ncvs/src/sys/ufs/ffs/fs.h,v retrieving revision 1.40 diff -u -r1.40 fs.h --- sys/ufs/ffs/fs.h 16 Nov 2003 07:08:27 -0000 1.40 +++ sys/ufs/ffs/fs.h 27 Jan 2004 03:53:58 -0000 @@ -361,7 +361,7 @@ */ #define FS_UFS1_MAGIC 0x011954 /* UFS1 fast filesystem magic number */ #define FS_UFS2_MAGIC 0x19540119 /* UFS2 fast filesystem magic number */ -#define FS_BAD2_MAGIC 0x19960408 /* UFS2 incomplete newfs magic number */ +#define FS_BAD_MAGIC 0x19960408 /* UFS incomplete newfs magic number */ #define FS_OKAY 0x7c269d38 /* superblock checksum */ #define FS_42INODEFMT -1 /* 4.2BSD inode format */ #define FS_44INODEFMT 2 /* 4.4BSD inode format */ --- patch2 ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040127065331.43F7611AE7>