From delphij@frontfree.net  Mon Jan 26 22:54:33 2004
Return-Path: <delphij@frontfree.net>
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 <delphij@frontfree.net>
Reply-To: Xin LI <delphij@frontfree.net>
To: FreeBSD-gnats-submit@freebsd.org
Cc: mckusick@FreeBSD.org;, wes@FreeBSD.org;, freebsd-fs@FreeBSD.org
Subject: [PATCH] bring incompletely initialized magic to UFS1
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         61981
>Category:       bin
>Synopsis:       [PATCH] bring incompletely initialized magic to UFS1
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    jhb
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 26 23:00:31 PST 2004
>Closed-Date:    Fri Jan 07 21:16:49 GMT 2005
>Last-Modified:  Fri Jan 07 21:16:49 GMT 2005
>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:
State-Changed-From-To: open->patched 
State-Changed-By: jhb 
State-Changed-When: Thu Aug 19 12:43:44 GMT 2004 
State-Changed-Why:  
Committed to HEAD (6.0-CURRENT) so mark as patched.  Will close the PR 
when this makes it into RELENG_5. 


Responsible-Changed-From-To: freebsd-bugs->jhb 
Responsible-Changed-By: jhb 
Responsible-Changed-When: Thu Aug 19 12:43:44 GMT 2004 
Responsible-Changed-Why:  
Committed to HEAD (6.0-CURRENT) so mark as patched.  Will close the PR 
when this makes it into RELENG_5. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=61981 
State-Changed-From-To: patched->closed 
State-Changed-By: jhb 
State-Changed-When: Fri Jan 7 21:16:16 GMT 2005 
State-Changed-Why:  
This was MFC'd prior to 5.3; I just forgot to close the PR then. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=61981 
>Unformatted:
