From owner-freebsd-bugs@FreeBSD.ORG Mon Jan 26 23:01:26 2004 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A515E16A4CE for ; Mon, 26 Jan 2004 23:01:26 -0800 (PST) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id F3F1143D69 for ; Mon, 26 Jan 2004 23:00:31 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) i0R70VFR036950 for ; Mon, 26 Jan 2004 23:00:31 -0800 (PST) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.10/8.12.10/Submit) id i0R70V2c036949; Mon, 26 Jan 2004 23:00:31 -0800 (PST) (envelope-from gnats) Resent-Date: Mon, 26 Jan 2004 23:00:31 -0800 (PST) Resent-Message-Id: <200401270700.i0R70V2c036949@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Xin LI Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BD72C16A4CE; Mon, 26 Jan 2004 22:54:33 -0800 (PST) Received: from ftp.bjpu.edu.cn (ftp.bjpu.edu.cn [202.112.78.5]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7830843D45; Mon, 26 Jan 2004 22:54:06 -0800 (PST) (envelope-from delphij@frontfree.net) Received: by ftp.bjpu.edu.cn (Postfix, from userid 426) id BBA105359; Tue, 27 Jan 2004 14:53:32 +0800 (CST) Received: from beastie.frontfree.net (beastie.frontfree.net [218.107.145.7]) by ftp.bjpu.edu.cn (Postfix) with ESMTP id 863375299; Tue, 27 Jan 2004 14:53:32 +0800 (CST) Received: by beastie.frontfree.net (Postfix, from userid 1001) id 43F7611AE7; Tue, 27 Jan 2004 14:53:31 +0800 (CST) Message-Id: <20040127065331.43F7611AE7@beastie.frontfree.net> Date: Tue, 27 Jan 2004 14:53:31 +0800 (CST) From: Xin LI To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 cc: mckusick@FreeBSD.org Subject: bin/61981: [PATCH] bring incompletely initialized magic to UFS1 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Xin LI List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jan 2004 07:01:26 -0000 >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: