diff options
-rw-r--r-- | sbin/fsck_ffs/setup.c | 4 | ||||
-rw-r--r-- | sbin/newfs/mkfs.c | 13 | ||||
-rw-r--r-- | sys/ufs/ffs/fs.h | 2 |
3 files changed, 12 insertions, 7 deletions
diff --git a/sbin/fsck_ffs/setup.c b/sbin/fsck_ffs/setup.c index 11004a5..e95a6ad 100644 --- a/sbin/fsck_ffs/setup.c +++ b/sbin/fsck_ffs/setup.c @@ -306,7 +306,7 @@ readsb(int listerr) 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); } @@ -322,7 +322,7 @@ readsb(int listerr) 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); } diff --git a/sbin/newfs/mkfs.c b/sbin/newfs/mkfs.c index 17519ae..66074c7 100644 --- a/sbin/newfs/mkfs.c +++ b/sbin/newfs/mkfs.c @@ -236,8 +236,14 @@ mkfs(struct partition *pp, char *fsys) } 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); @@ -257,7 +263,6 @@ mkfs(struct partition *pp, char *fsys) 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); @@ -455,8 +460,8 @@ mkfs(struct partition *pp, char *fsys) } 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 diff --git a/sys/ufs/ffs/fs.h b/sys/ufs/ffs/fs.h index b98c8f1..c859e02 100644 --- a/sys/ufs/ffs/fs.h +++ b/sys/ufs/ffs/fs.h @@ -357,7 +357,7 @@ CTASSERT(sizeof(struct fs) == 1376); */ #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 */ |