Module Name: src
Committed By: rin
Date: Wed Feb 8 16:11:40 UTC 2017
Modified Files:
src/sbin/fsck_ffs: Makefile dir.c fsck.h inode.c main.c pass1.c pass2.c
setup.c utilities.c
src/sbin/newfs: Makefile extern.h mkfs.c newfs.c
src/sys/ufs/ufs: ufs_bswap.h
Added Files:
src/distrib/utils/x_fsck_ffs: Makefile
src/distrib/utils/x_newfs: Makefile
src/sbin/fsck_ffs: Makefile.common
src/sbin/newfs: Makefile.common
Log Message:
Add smaller versions of fsck_ffs(8) and newfs(8) for install media, where
support for Endian-Independent FFS and Apple UFS is disabled unless FFS_EI=1
and APPLE_UFS=1 are added to CRUNCHENV, respectively.
This reduces the size of ramdisk image for atari by over 15KB.
Thanks tsutsui and christos for their useful comments.
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/distrib/utils/x_fsck_ffs/Makefile
cvs rdiff -u -r0 -r1.1 src/distrib/utils/x_newfs/Makefile
cvs rdiff -u -r1.47 -r1.48 src/sbin/fsck_ffs/Makefile
cvs rdiff -u -r0 -r1.1 src/sbin/fsck_ffs/Makefile.common
cvs rdiff -u -r1.57 -r1.58 src/sbin/fsck_ffs/dir.c
cvs rdiff -u -r1.49 -r1.50 src/sbin/fsck_ffs/fsck.h
cvs rdiff -u -r1.71 -r1.72 src/sbin/fsck_ffs/inode.c
cvs rdiff -u -r1.83 -r1.84 src/sbin/fsck_ffs/main.c
cvs rdiff -u -r1.56 -r1.57 src/sbin/fsck_ffs/pass1.c
cvs rdiff -u -r1.50 -r1.51 src/sbin/fsck_ffs/pass2.c
cvs rdiff -u -r1.100 -r1.101 src/sbin/fsck_ffs/setup.c
cvs rdiff -u -r1.64 -r1.65 src/sbin/fsck_ffs/utilities.c
cvs rdiff -u -r1.39 -r1.40 src/sbin/newfs/Makefile
cvs rdiff -u -r0 -r1.1 src/sbin/newfs/Makefile.common
cvs rdiff -u -r1.15 -r1.16 src/sbin/newfs/extern.h
cvs rdiff -u -r1.127 -r1.128 src/sbin/newfs/mkfs.c
cvs rdiff -u -r1.114 -r1.115 src/sbin/newfs/newfs.c
cvs rdiff -u -r1.21 -r1.22 src/sys/ufs/ufs/ufs_bswap.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sbin/fsck_ffs/Makefile
diff -u src/sbin/fsck_ffs/Makefile:1.47 src/sbin/fsck_ffs/Makefile:1.48
--- src/sbin/fsck_ffs/Makefile:1.47 Tue Feb 7 16:14:47 2017
+++ src/sbin/fsck_ffs/Makefile Wed Feb 8 16:11:40 2017
@@ -1,45 +1,17 @@
-# $NetBSD: Makefile,v 1.47 2017/02/07 16:14:47 rin Exp $
+# $NetBSD: Makefile,v 1.48 2017/02/08 16:11:40 rin Exp $
# @(#)Makefile 8.2 (Berkeley) 4/27/95
+# when making a change to this file, please check if the change is
+# also needed for src/distrib/utils/x_fsck_ffs.
+# such stuff should be into Makefile.common.
+
.include <bsd.own.mk>
-PROG= fsck_ffs
MAN= fsck_ffs.8
-SRCS= dir.c inode.c main.c pass1.c pass1b.c pass2.c pass3.c pass4.c \
- pass5.c pass6.c fsutil.c setup.c utilities.c ffs_bswap.c ffs_subr.c \
- ffs_tables.c ffs_appleufs.c partutil.c snapshot.c quota2.c quota2_subr.c
-
-FSCK= ${NETBSDSRCDIR}/sbin/fsck
-DUMP= ${NETBSDSRCDIR}/sbin/dump
-CPPFLAGS+=-I${FSCK} -I${DUMP}
-.ifndef SMALLPROG
-CPPFLAGS+=-DPROGRESS
-SRCS+= progress.c
-.endif
-.PATH: ${FSCK}
-
-.PATH: ${NETBSDSRCDIR}/sys/ufs/ffs ${NETBSDSRCDIR}/sys/ufs/ufs ${FSCK} ${DUMP}
-
-SRCS+= vfs_wapbl.c wapbl.c
-.PATH: ${NETBSDSRCDIR}/sys/kern
-CPPFLAGS+=-DWAPBL_DEBUG_PRINT=0
-
-LDADD+=-lutil
-DPADD+=${LIBUTIL}
-
-LDADD+=-lprop
-DPADD+=${LIBPROP}
-
-COPTS.ffs_appleufs.c+= -Wno-pointer-sign
-
-.if ${MACHINE_ARCH} == "m68000"
-COPTS.pass1.c+= -fno-tree-fre -fno-tree-lrs
-.endif
-.if ${MACHINE_ARCH} == "vax"
-COPTS.pass1.c+= -O0
-.endif
+SRCS= ffs_bswap.c ffs_appleufs.c
+SUBDIR= SMM.doc
-SUBDIR+=SMM.doc
+.include "Makefile.common"
.include <bsd.prog.mk>
.include <bsd.subdir.mk>
Index: src/sbin/fsck_ffs/dir.c
diff -u src/sbin/fsck_ffs/dir.c:1.57 src/sbin/fsck_ffs/dir.c:1.58
--- src/sbin/fsck_ffs/dir.c:1.57 Sun Jun 23 07:28:36 2013
+++ src/sbin/fsck_ffs/dir.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: dir.c,v 1.57 2013/06/23 07:28:36 dholland Exp $ */
+/* $NetBSD: dir.c,v 1.58 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)dir.c 8.8 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: dir.c,v 1.57 2013/06/23 07:28:36 dholland Exp $");
+__RCSID("$NetBSD: dir.c,v 1.58 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -154,10 +154,10 @@ dirscan(struct inodesc *idesc)
struct bufarea *bp;
int dsize, n;
long blksiz;
-#if UFS_DIRBLKSIZ > APPLEUFS_DIRBLKSIZ
- char dbuf[UFS_DIRBLKSIZ];
-#else
+#if !defined(NO_APPLE_UFS) && UFS_DIRBLKSIZ < APPLEUFS_DIRBLKSIZ
char dbuf[APPLEUFS_DIRBLKSIZ];
+#else
+ char dbuf[UFS_DIRBLKSIZ];
#endif
if (idesc->id_type != DATA)
@@ -703,10 +703,10 @@ expanddir(union dinode *dp, char *name)
daddr_t lastbn, newblk, dirblk;
struct bufarea *bp;
char *cp;
-#if DIRBLKSIZ > APPLEUFS_DIRBLKSIZ
- char firstblk[DIRBLKSIZ];
-#else
+#if !defined(NO_APPLE_UFS) && UFS_DIRBLKSIZ < APPLEUFS_DIRBLKSIZ
char firstblk[APPLEUFS_DIRBLKSIZ];
+#else
+ char firstblk[UFS_DIRBLKSIZ];
#endif
struct ufs1_dinode *dp1 = NULL;
struct ufs2_dinode *dp2 = NULL;
Index: src/sbin/fsck_ffs/fsck.h
diff -u src/sbin/fsck_ffs/fsck.h:1.49 src/sbin/fsck_ffs/fsck.h:1.50
--- src/sbin/fsck_ffs/fsck.h:1.49 Sun Mar 6 17:08:16 2011
+++ src/sbin/fsck_ffs/fsck.h Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: fsck.h,v 1.49 2011/03/06 17:08:16 bouyer Exp $ */
+/* $NetBSD: fsck.h,v 1.50 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -120,7 +120,9 @@ struct bufarea {
struct cg *b_cg; /* cylinder group */
struct ufs1_dinode *b_dinode1; /* UFS1 inode block */
struct ufs2_dinode *b_dinode2; /* UFS2 inode block */
+#ifndef NO_APPLE_UFS
struct appleufslabel *b_appleufs; /* Apple UFS volume label */
+#endif
} b_un;
char b_dirty;
};
@@ -142,7 +144,9 @@ struct bufarea bufhead; /* head of list
struct bufarea sblk; /* file system superblock */
struct bufarea asblk; /* file system superblock */
struct bufarea cgblk; /* cylinder group blocks */
-struct bufarea appleufsblk; /* Apple UFS volume label */
+#ifndef NO_APPLE_UFS
+struct bufarea appleufsblk; /* Apple UFS volume label */
+#endif
struct bufarea *pdirbp; /* current directory contents */
struct bufarea *pbp; /* current inode block */
@@ -280,12 +284,7 @@ char usedsoftdep; /* just fix soft depe
int preen; /* just fix normal inconsistencies */
int quiet; /* Don't print anything if clean */
int forceimage; /* file system is an image file */
-int doswap; /* convert byte order */
-int needswap; /* need to convert byte order in memory */
int is_ufs2; /* we're dealing with an UFS2 filesystem */
-int do_blkswap; /* need to do block addr byteswap */
-int do_dirswap; /* need to do dir entry byteswap */
-int endian; /* endian coversion */
int markclean; /* mark file system clean when done */
char havesb; /* superblock has been read */
char skipclean; /* skip clean file systems if preening */
@@ -294,7 +293,33 @@ int fsreadfd; /* file descriptor for re
int fswritefd; /* file descriptor for writing file system */
int rerun; /* rerun fsck. Only used in non-preen mode */
char resolved; /* cleared if unresolved changes => not clean */
+
+#ifndef NO_FFS_EI
+int endian; /* endian coversion */
+int doswap; /* convert byte order */
+int needswap; /* need to convert byte order in memory */
+int do_blkswap; /* need to do block addr byteswap */
+int do_dirswap; /* need to do dir entry byteswap */
+#else
+/* Disable Endian-Independent FFS support for install media */
+#define endian (0)
+#define doswap (0)
+#define needswap (0)
+#define do_blkswap (0)
+#define do_dirswap (0)
+#define ffs_cg_swap(a, b, c) do {} while (/*CONSTCOND*/0)
+#define ffs_csum_swap(a, b, c) do {} while (/*CONSTCOND*/0)
+#define ffs_sb_swap(a, b) do {} while (/*CONSTCOND*/0)
+#define swap_dinode1(a, b) do {} while (/*CONSTCOND*/0)
+#define swap_dinode2(a, b) do {} while (/*CONSTCOND*/0)
+#endif
+
+#ifndef NO_APPLE_UFS
int isappleufs; /* filesystem is Apple UFS */
+#else
+/* Disable Apple UFS support for install media */
+#define isappleufs (0)
+#endif
daddr_t maxfsblock; /* number of blocks in the file system */
char *blockmap; /* ptr to primary blk allocation map */
@@ -334,6 +359,7 @@ struct ufs2_dinode ufs2_zino;
#define ALTERED 0x08
#define FOUND 0x10
+#ifndef NO_FFS_EI
/* some inline functs to help the byte-swapping mess */
static inline u_int16_t iswap16 (u_int16_t);
static inline u_int32_t iswap32 (u_int32_t);
@@ -362,3 +388,8 @@ iswap64(u_int64_t x)
return bswap64(x);
else return x;
}
+#else
+#define iswap16(x) (x)
+#define iswap32(x) (x)
+#define iswap64(x) (x)
+#endif /* NO_FFS_EI */
Index: src/sbin/fsck_ffs/inode.c
diff -u src/sbin/fsck_ffs/inode.c:1.71 src/sbin/fsck_ffs/inode.c:1.72
--- src/sbin/fsck_ffs/inode.c:1.71 Sat Apr 5 12:32:27 2014
+++ src/sbin/fsck_ffs/inode.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: inode.c,v 1.71 2014/04/05 12:32:27 justin Exp $ */
+/* $NetBSD: inode.c,v 1.72 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)inode.c 8.8 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: inode.c,v 1.71 2014/04/05 12:32:27 justin Exp $");
+__RCSID("$NetBSD: inode.c,v 1.72 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -64,8 +64,10 @@ __RCSID("$NetBSD: inode.c,v 1.71 2014/04
static ino_t startinum;
static int iblock(struct inodesc *, long, u_int64_t);
+#ifndef NO_FFS_EI
static void swap_dinode1(union dinode *, int);
static void swap_dinode2(union dinode *, int);
+#endif
int
ckinode(union dinode *dp, struct inodesc *idesc)
@@ -342,6 +344,7 @@ ginode(ino_t inumber)
return ((union dinode *)((caddr_t)pbp->b_un.b_buf + blkoff));
}
+#ifndef NO_FFS_EI
static void
swap_dinode1(union dinode *dp, int n)
{
@@ -385,6 +388,7 @@ swap_dinode2(union dinode *dp, int n)
}
}
}
+#endif /* !NO_FFS_EI */
/*
* Special purpose version of ginode used to optimize first pass
Index: src/sbin/fsck_ffs/main.c
diff -u src/sbin/fsck_ffs/main.c:1.83 src/sbin/fsck_ffs/main.c:1.84
--- src/sbin/fsck_ffs/main.c:1.83 Tue Jun 16 23:58:30 2015
+++ src/sbin/fsck_ffs/main.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.83 2015/06/16 23:58:30 christos Exp $ */
+/* $NetBSD: main.c,v 1.84 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 19
#if 0
static char sccsid[] = "@(#)main.c 8.6 (Berkeley) 5/14/95";
#else
-__RCSID("$NetBSD: main.c,v 1.83 2015/06/16 23:58:30 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.84 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -96,21 +96,30 @@ main(int argc, char *argv[])
skipclean = 1;
markclean = 1;
forceimage = 0;
+#ifndef NO_FFS_EI
endian = 0;
+#endif
+#ifndef NO_APPLE_UFS
isappleufs = 0;
+#endif
while ((ch = getopt(argc, argv, "aB:b:c:dFfm:npPqUyx:X")) != -1) {
switch (ch) {
+#ifndef NO_APPLE_UFS
case 'a':
isappleufs = 1;
break;
+#endif
+#ifndef NO_FFS_EI
case 'B':
if (strcmp(optarg, "be") == 0)
endian = BIG_ENDIAN;
else if (strcmp(optarg, "le") == 0)
endian = LITTLE_ENDIAN;
- else usage();
+ else
+ usage();
break;
+#endif
case 'b':
skipclean = 0;
@@ -511,8 +520,15 @@ usage(void)
{
(void) fprintf(stderr,
- "usage: %s [-adFfPpqUX] [-B byteorder] [-b block] [-c level] "
- "[-m mode]\n"
+ "usage: %s [-"
+#ifndef NO_APPLE_UFS
+ "a"
+#endif
+ "dFfPpqUX] "
+#ifndef NO_FFS_EI
+ "[-B byteorder] "
+#endif
+ "[-b block] [-c level] [-m mode]\n"
"\t[-x snap-backup] [-y | -n] filesystem ...\n",
getprogname());
exit(FSCK_EXIT_USAGE);
Index: src/sbin/fsck_ffs/pass1.c
diff -u src/sbin/fsck_ffs/pass1.c:1.56 src/sbin/fsck_ffs/pass1.c:1.57
--- src/sbin/fsck_ffs/pass1.c:1.56 Sat Oct 19 01:09:58 2013
+++ src/sbin/fsck_ffs/pass1.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: pass1.c,v 1.56 2013/10/19 01:09:58 christos Exp $ */
+/* $NetBSD: pass1.c,v 1.57 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)pass1.c 8.6 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: pass1.c,v 1.56 2013/10/19 01:09:58 christos Exp $");
+__RCSID("$NetBSD: pass1.c,v 1.57 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -220,7 +220,9 @@ pass1(void)
progress_done();
#endif /* PROGRESS */
freeinodebuf();
+#ifndef NO_FFS_EI
do_blkswap = 0; /* has been done */
+#endif
}
static void
Index: src/sbin/fsck_ffs/pass2.c
diff -u src/sbin/fsck_ffs/pass2.c:1.50 src/sbin/fsck_ffs/pass2.c:1.51
--- src/sbin/fsck_ffs/pass2.c:1.50 Sun Jun 9 17:57:09 2013
+++ src/sbin/fsck_ffs/pass2.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: pass2.c,v 1.50 2013/06/09 17:57:09 dholland Exp $ */
+/* $NetBSD: pass2.c,v 1.51 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)pass2.c 8.9 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: pass2.c,v 1.50 2013/06/09 17:57:09 dholland Exp $");
+__RCSID("$NetBSD: pass2.c,v 1.51 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -70,7 +70,9 @@ pass2(void)
struct inodesc curino;
union dinode dino;
int i, maxblk;
+#ifndef NO_FFS_EI
unsigned ii;
+#endif
char pathbuf[MAXPATHLEN + 1];
rinfo = inoinfo(UFS_ROOTINO);
@@ -223,6 +225,7 @@ pass2(void)
(void)ckinode(&dino, &curino);
}
+#ifndef NO_FFS_EI
/*
* Byte swapping in directory entries, if needed, has been done.
* Now rescan dirs for pass2check()
@@ -252,6 +255,7 @@ pass2(void)
(void)ckinode(&dino, &curino);
}
}
+#endif /* !NO_FFS_EI */
/*
* Now that the parents of all directories have been found,
Index: src/sbin/fsck_ffs/setup.c
diff -u src/sbin/fsck_ffs/setup.c:1.100 src/sbin/fsck_ffs/setup.c:1.101
--- src/sbin/fsck_ffs/setup.c:1.100 Sun Jun 23 07:28:36 2013
+++ src/sbin/fsck_ffs/setup.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: setup.c,v 1.100 2013/06/23 07:28:36 dholland Exp $ */
+/* $NetBSD: setup.c,v 1.101 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)setup.c 8.10 (Berkeley) 5/9/95";
#else
-__RCSID("$NetBSD: setup.c,v 1.100 2013/06/23 07:28:36 dholland Exp $");
+__RCSID("$NetBSD: setup.c,v 1.101 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -70,7 +70,9 @@ __RCSID("$NetBSD: setup.c,v 1.100 2013/0
static void badsb(int, const char *);
static int calcsb(const char *, int, struct fs *);
static int readsb(int);
+#ifndef NO_APPLE_UFS
static int readappleufs(void);
+#endif
int16_t sblkpostbl[256];
@@ -527,19 +529,26 @@ setup(const char *dev, const char *origd
else
usedsoftdep = 0;
+#ifndef NO_APPLE_UFS
if (!forceimage && dkw.dkw_parent[0])
if (strcmp(dkw.dkw_ptype, DKW_PTYPE_APPLEUFS) == 0)
isappleufs = 1;
if (readappleufs())
isappleufs = 1;
+#endif
- dirblksiz = UFS_DIRBLKSIZ;
if (isappleufs)
dirblksiz = APPLEUFS_DIRBLKSIZ;
+ else
+ dirblksiz = UFS_DIRBLKSIZ;
if (debug)
+#ifndef NO_APPLE_UFS
printf("isappleufs = %d, dirblksiz = %d\n", isappleufs, dirblksiz);
+#else
+ printf("dirblksiz = %d\n", dirblksiz);
+#endif
if (sblock->fs_flags & FS_DOQUOTA2) {
/* allocate the quota hash table */
@@ -580,6 +589,7 @@ badsblabel:
return (0);
}
+#ifndef NO_APPLE_UFS
static int
readappleufs(void)
{
@@ -684,6 +694,7 @@ readappleufs(void)
}
return 1;
}
+#endif /* !NO_APPLE_UFS */
/*
* Detect byte order. Return 0 if valid magic found, -1 otherwise.
@@ -696,6 +707,7 @@ detect_byteorder(struct fs *fs, int sblo
/* Likely to be the first alternate of a fs with 64k blocks */
return -1;
if (fs->fs_magic == FS_UFS1_MAGIC || fs->fs_magic == FS_UFS2_MAGIC) {
+#ifndef NO_FFS_EI
if (endian == 0 || BYTE_ORDER == endian) {
needswap = 0;
doswap = do_blkswap = do_dirswap = 0;
@@ -703,8 +715,11 @@ detect_byteorder(struct fs *fs, int sblo
needswap = 1;
doswap = do_blkswap = do_dirswap = 1;
}
+#endif
return 0;
- } else if (fs->fs_magic == FS_UFS1_MAGIC_SWAPPED ||
+ }
+#ifndef NO_FFS_EI
+ else if (fs->fs_magic == FS_UFS1_MAGIC_SWAPPED ||
fs->fs_magic == FS_UFS2_MAGIC_SWAPPED) {
if (endian == 0 || BYTE_ORDER != endian) {
needswap = 1;
@@ -715,6 +730,7 @@ detect_byteorder(struct fs *fs, int sblo
}
return 0;
}
+#endif
return -1;
}
@@ -1027,8 +1043,11 @@ calcsb(const char *dev, int devfd, struc
pfatal("%s: CANNOT FIGURE OUT FILE SYSTEM PARTITION\n", dev);
return (0);
}
- if (strcmp(dkw.dkw_ptype, DKW_PTYPE_FFS) &&
- strcmp(dkw.dkw_ptype, DKW_PTYPE_APPLEUFS)) {
+ if (strcmp(dkw.dkw_ptype, DKW_PTYPE_FFS)
+#ifndef NO_APPLE_UFS
+ && strcmp(dkw.dkw_ptype, DKW_PTYPE_APPLEUFS)
+#endif
+ ) {
pfatal("%s: NOT LABELED AS A BSD FILE SYSTEM (%s)\n",
dev, dkw.dkw_ptype);
return (0);
Index: src/sbin/fsck_ffs/utilities.c
diff -u src/sbin/fsck_ffs/utilities.c:1.64 src/sbin/fsck_ffs/utilities.c:1.65
--- src/sbin/fsck_ffs/utilities.c:1.64 Sat Oct 19 01:09:58 2013
+++ src/sbin/fsck_ffs/utilities.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: utilities.c,v 1.64 2013/10/19 01:09:58 christos Exp $ */
+/* $NetBSD: utilities.c,v 1.65 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)utilities.c 8.6 (Berkeley) 5/19/95";
#else
-__RCSID("$NetBSD: utilities.c,v 1.64 2013/10/19 01:09:58 christos Exp $");
+__RCSID("$NetBSD: utilities.c,v 1.65 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -140,11 +140,13 @@ bufinit(void)
errexit("cannot allocate buffer pool");
cgblk.b_un.b_buf = bufp;
initbarea(&cgblk);
+#ifndef NO_APPLE_UFS
bufp = malloc((unsigned int)APPLEUFS_LABEL_SIZE);
if (bufp == 0)
errexit("cannot allocate buffer pool");
appleufsblk.b_un.b_buf = bufp;
initbarea(&appleufsblk);
+#endif
bufhead.b_next = bufhead.b_prev = &bufhead;
bufcnt = MAXBUFSPACE / sblock->fs_bsize;
if (bufcnt < MINBUFS)
@@ -287,8 +289,10 @@ ckfini(int noint)
sbdirty();
flush(fswritefd, &sblk);
}
+#ifndef NO_APPLE_UFS
flush(fswritefd, &appleufsblk);
free(appleufsblk.b_un.b_buf);
+#endif
flush(fswritefd, &cgblk);
free(cgblk.b_un.b_buf);
for (bp = bufhead.b_prev; bp && bp != &bufhead; bp = nbp) {
Index: src/sbin/newfs/Makefile
diff -u src/sbin/newfs/Makefile:1.39 src/sbin/newfs/Makefile:1.40
--- src/sbin/newfs/Makefile:1.39 Fri Aug 10 12:20:11 2012
+++ src/sbin/newfs/Makefile Wed Feb 8 16:11:40 2017
@@ -1,31 +1,18 @@
-# $NetBSD: Makefile,v 1.39 2012/08/10 12:20:11 joerg Exp $
+# $NetBSD: Makefile,v 1.40 2017/02/08 16:11:40 rin Exp $
# @(#)Makefile 8.2 (Berkeley) 3/27/94
+# when making a change to this file, please check if the change is
+# also needed for src/distrib/utils/x_newfs.
+# such stuff should be into Makefile.common.
+
.include <bsd.own.mk>
-PROG= newfs
-SRCS= dkcksum.c newfs.c mkfs.c ffs_bswap.c ffs_appleufs.c partutil.c
-SRCS+= pathadj.c quota2_subr.c
+SRCS= ffs_bswap.c ffs_appleufs.c
MAN= newfs.8 mount_mfs.8
-DISKLABEL=${NETBSDSRCDIR}/sbin/disklabel
-FSCK=${NETBSDSRCDIR}/sbin/fsck
-MOUNT=${NETBSDSRCDIR}/sbin/mount
-CPPFLAGS+=-DMFS -I${.CURDIR} -I${DISKLABEL} -I${FSCK} -I${MOUNT}
-CPPFLAGS+=-DGARBAGE
-
-DPADD+= ${LIBUTIL}
-LDADD+= -lutil
-
-LDADD+=-lprop
-DPADD+=${LIBPROP}
-
-.PATH: ${DISKLABEL} ${NETBSDSRCDIR}/sys/ufs/ffs ${NETBSDSRCDIR}/sys/ufs/ufs
-.PATH: ${FSCK} ${MOUNT}
-
LINKS= ${BINDIR}/newfs ${BINDIR}/mount_mfs
MLINKS= mount_mfs.8 mfs.8
-COPTS.ffs_appleufs.c+= -Wno-pointer-sign
+.include "Makefile.common"
.include <bsd.prog.mk>
Index: src/sbin/newfs/extern.h
diff -u src/sbin/newfs/extern.h:1.15 src/sbin/newfs/extern.h:1.16
--- src/sbin/newfs/extern.h:1.15 Sun Mar 6 17:08:16 2011
+++ src/sbin/newfs/extern.h Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: extern.h,v 1.15 2011/03/06 17:08:16 bouyer Exp $ */
+/* $NetBSD: extern.h,v 1.16 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1997 Christos Zoulas. All rights reserved.
@@ -52,7 +52,23 @@ extern int avgfilesize; /* expected aver
extern int avgfpdir; /* expected number of files per directory */
extern u_long memleft; /* virtual memory available */
extern caddr_t membase; /* start address of memory based filesystem */
+extern int quotas; /* filesystem quota to enable */
+
+#ifndef NO_FFS_EI
extern int needswap; /* Filesystem not in native byte order */
+#else
+/* Disable Endian-Independent FFS support for install media */
+#define needswap (0)
+#define ffs_cg_swap(a, b, c) do {} while (/*CONSTCOND*/0)
+#define ffs_csum_swap(a, b, c) do {} while (/*CONSTCOND*/0)
+#define ffs_dinode1_swap(a, b) do {} while (/*CONSTCOND*/0)
+#define ffs_sb_swap(a, b) do {} while (/*CONSTCOND*/0)
+#endif
+
+#ifndef NO_APPLE_UFS
extern int isappleufs; /* Filesystem is Apple UFS */
extern char *appleufs_volname; /* Apple UFS volume name */
-extern int quotas; /* filesystem quota to enable */
+#else
+/* Disable Apple UFS support for install media */
+#define isappleufs (0)
+#endif
Index: src/sbin/newfs/mkfs.c
diff -u src/sbin/newfs/mkfs.c:1.127 src/sbin/newfs/mkfs.c:1.128
--- src/sbin/newfs/mkfs.c:1.127 Mon Mar 7 15:55:06 2016
+++ src/sbin/newfs/mkfs.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: mkfs.c,v 1.127 2016/03/07 15:55:06 christos Exp $ */
+/* $NetBSD: mkfs.c,v 1.128 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1980, 1989, 1993
@@ -73,7 +73,7 @@
#if 0
static char sccsid[] = "@(#)mkfs.c 8.11 (Berkeley) 5/3/95";
#else
-__RCSID("$NetBSD: mkfs.c,v 1.127 2016/03/07 15:55:06 christos Exp $");
+__RCSID("$NetBSD: mkfs.c,v 1.128 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -631,6 +631,7 @@ mkfs(const char *fsys, int fi, int fo,
*/
zap_old_sblock(EXT2FS_SBOFF);
+#ifndef NO_APPLE_UFS
if (isappleufs) {
struct appleufslabel appleufs;
ffs_appleufs_set(&appleufs, appleufs_volname,
@@ -648,6 +649,7 @@ mkfs(const char *fsys, int fi, int fo,
APPLEUFS_LABEL_SIZE, &appleufs);
}
}
+#endif
}
/*
Index: src/sbin/newfs/newfs.c
diff -u src/sbin/newfs/newfs.c:1.114 src/sbin/newfs/newfs.c:1.115
--- src/sbin/newfs/newfs.c:1.114 Fri Apr 1 05:23:56 2016
+++ src/sbin/newfs/newfs.c Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: newfs.c,v 1.114 2016/04/01 05:23:56 ryo Exp $ */
+/* $NetBSD: newfs.c,v 1.115 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1983, 1989, 1993, 1994
@@ -78,7 +78,7 @@ __COPYRIGHT("@(#) Copyright (c) 1983, 19
#if 0
static char sccsid[] = "@(#)newfs.c 8.13 (Berkeley) 5/1/95";
#else
-__RCSID("$NetBSD: newfs.c,v 1.114 2016/04/01 05:23:56 ryo Exp $");
+__RCSID("$NetBSD: newfs.c,v 1.115 2017/02/08 16:11:40 rin Exp $");
#endif
#endif /* not lint */
@@ -225,11 +225,15 @@ int avgfpdir = AFPDIR; /* expected numbe
int mntflags = 0; /* flags to be passed to mount */
u_long memleft; /* virtual memory available */
caddr_t membase; /* start address of memory based filesystem */
+#ifndef NO_FFS_EI
int needswap; /* Filesystem not in native byte order */
+#endif
char *disktype = NULL;
int unlabeled;
+#ifndef NO_APPLE_UFS
char *appleufs_volname = 0; /* Apple UFS volume name */
int isappleufs = 0;
+#endif
int quotas = 0;
char device[MAXPATHLEN];
@@ -280,18 +284,20 @@ main(int argc, char *argv[])
"B:FGINO:S:T:V:Za:b:d:e:f:g:h:i:l:m:n:o:q:r:s:v:";
while ((ch = getopt(argc, argv, opstring)) != -1)
switch (ch) {
+#ifndef NO_FFS_EI
case 'B':
if (strcmp(optarg, "be") == 0) {
-#if BYTE_ORDER == LITTLE_ENDIAN
+# if BYTE_ORDER == LITTLE_ENDIAN
needswap = 1;
-#endif
+# endif
} else if (strcmp(optarg, "le") == 0) {
-#if BYTE_ORDER == BIG_ENDIAN
+# if BYTE_ORDER == BIG_ENDIAN
needswap = 1;
-#endif
+# endif
} else
usage();
break;
+#endif
case 'F':
Fflag = 1;
break;
@@ -413,6 +419,7 @@ main(int argc, char *argv[])
/* mfs only */
mfsuid = mfs_user(optarg);
break;
+#ifndef NO_APPLE_UFS
case 'v':
appleufs_volname = optarg;
if (strchr(appleufs_volname, ':') || strchr(appleufs_volname, '/'))
@@ -421,6 +428,7 @@ main(int argc, char *argv[])
errx(1,"Apple UFS volume name cannot be zero length");
isappleufs = 1;
break;
+#endif
case '?':
default:
usage();
@@ -556,8 +564,10 @@ main(int argc, char *argv[])
if (dkw.dkw_size == 0)
errx(1, "%s partition is unavailable", special);
+#ifndef NO_APPLE_UFS
if (strcmp(dkw.dkw_ptype, DKW_PTYPE_APPLEUFS) == 0)
isappleufs = 1;
+#endif
if (!Iflag) {
static const char m[] =
@@ -843,7 +853,9 @@ struct help_strings {
int flags;
const char *str;
} const help_strings[] = {
+#ifndef NO_FFS_EI
{ NEWFS, "-B byteorder\tbyte order (`be' or `le')" },
+#endif
{ NEWFS, "-F \t\tcreate file system image in regular file" },
{ NEWFS, "-G \t\tmake sanity calculations non-fatal (testing only!)" },
{ NEWFS, "-I \t\tdo not check that the file system type is '4.2BSD'" },
@@ -874,7 +886,9 @@ struct help_strings {
{ MFS_MOUNT, "-p perm\t\tpermissions (in octal)" },
{ BOTH, "-s fssize\tfile system size (sectors)" },
{ MFS_MOUNT, "-u username\tuser name of mount point" },
+#ifndef NO_APPLE_UFS
{ NEWFS, "-v volname\tApple UFS volume name" },
+#endif
{ 0, NULL }
};
Index: src/sys/ufs/ufs/ufs_bswap.h
diff -u src/sys/ufs/ufs/ufs_bswap.h:1.21 src/sys/ufs/ufs/ufs_bswap.h:1.22
--- src/sys/ufs/ufs/ufs_bswap.h:1.21 Fri Apr 29 03:05:04 2016
+++ src/sys/ufs/ufs/ufs_bswap.h Wed Feb 8 16:11:40 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ufs_bswap.h,v 1.21 2016/04/29 03:05:04 christos Exp $ */
+/* $NetBSD: ufs_bswap.h,v 1.22 2017/02/08 16:11:40 rin Exp $ */
/*
* Copyright (c) 1998 Manuel Bouyer.
@@ -45,7 +45,7 @@
#define UFS_IPNEEDSWAP(ip) ((void)(ip), 0)
#endif
-#if !defined(_KERNEL) || defined(FFS_EI)
+#if (!defined(_KERNEL) && !defined(NO_FFS_EI)) || defined(FFS_EI)
/* inlines for access to swapped data */
static inline u_int16_t
ufs_rw16(uint16_t a, int ns)
Added files:
Index: src/distrib/utils/x_fsck_ffs/Makefile
diff -u /dev/null src/distrib/utils/x_fsck_ffs/Makefile:1.1
--- /dev/null Wed Feb 8 16:11:40 2017
+++ src/distrib/utils/x_fsck_ffs/Makefile Wed Feb 8 16:11:39 2017
@@ -0,0 +1,28 @@
+# $NetBSD: Makefile,v 1.1 2017/02/08 16:11:39 rin Exp $
+# Build a smaller fsck_ffs (i.e. for boot media).
+# Support for Endian-Independent FFS and Apple UFS is dropped unless FFS_EI=1
+# and APPLE_UFS=1 are added to CRUNCHENV, respectively.
+
+NOMAN= # defined
+
+.include <bsd.own.mk>
+
+SRCDIR= ${.CURDIR}/../../../sbin/fsck_ffs
+
+.ifdef FFS_EI
+SRCS+= ffs_bswap.c
+.else
+CPPFLAGS+= -DNO_FFS_EI
+.endif
+
+.ifdef APPLE_UFS
+SRCS+= ffs_appleufs.c
+.else
+CPPFLAGS+= -DNO_APPLE_UFS
+.endif
+
+.PATH: ${SRCDIR}
+
+.include "${SRCDIR}/Makefile.common"
+
+.include <bsd.prog.mk>
Index: src/distrib/utils/x_newfs/Makefile
diff -u /dev/null src/distrib/utils/x_newfs/Makefile:1.1
--- /dev/null Wed Feb 8 16:11:40 2017
+++ src/distrib/utils/x_newfs/Makefile Wed Feb 8 16:11:40 2017
@@ -0,0 +1,28 @@
+# $NetBSD: Makefile,v 1.1 2017/02/08 16:11:40 rin Exp $
+# Build a smaller newfs (i.e. for boot media).
+# Support for Endian-Independent FFS and Apple UFS is dropped unless FFS_EI=1
+# and APPLE_UFS=1 are added to CRUNCHENV, respectively.
+
+NOMAN= # defined
+
+.include <bsd.own.mk>
+
+SRCDIR= ${.CURDIR}/../../../sbin/newfs
+
+.ifdef FFS_EI
+SRCS+= ffs_bswap.c
+.else
+CPPFLAGS+= -DNO_FFS_EI
+.endif
+
+.ifdef APPLE_UFS
+SRCS+= ffs_appleufs.c
+.else
+CPPFLAGS+= -DNO_APPLE_UFS
+.endif
+
+.PATH: ${SRCDIR}
+
+.include "${SRCDIR}/Makefile.common"
+
+.include <bsd.prog.mk>
Index: src/sbin/fsck_ffs/Makefile.common
diff -u /dev/null src/sbin/fsck_ffs/Makefile.common:1.1
--- /dev/null Wed Feb 8 16:11:40 2017
+++ src/sbin/fsck_ffs/Makefile.common Wed Feb 8 16:11:40 2017
@@ -0,0 +1,41 @@
+# $NetBSD: Makefile.common,v 1.1 2017/02/08 16:11:40 rin Exp $
+# @(#)Makefile 8.2 (Berkeley) 4/27/95
+
+# shared stuff with src/distrib/utils/x_newfs for install media.
+# stuff not required by install media should be into Makefile.
+
+PROG= fsck_ffs
+SRCS+= dir.c inode.c main.c pass1.c pass1b.c pass2.c pass3.c pass4.c pass5.c \
+ pass6.c fsutil.c setup.c utilities.c ffs_subr.c ffs_tables.c \
+ partutil.c snapshot.c quota2.c quota2_subr.c
+
+FSCK= ${NETBSDSRCDIR}/sbin/fsck
+DUMP= ${NETBSDSRCDIR}/sbin/dump
+CPPFLAGS+=-I${FSCK} -I${DUMP}
+
+.PATH: ${FSCK}
+.PATH: ${NETBSDSRCDIR}/sys/ufs/ffs ${NETBSDSRCDIR}/sys/ufs/ufs ${FSCK} ${DUMP}
+
+SRCS+= vfs_wapbl.c wapbl.c
+.PATH: ${NETBSDSRCDIR}/sys/kern
+CPPFLAGS+=-DWAPBL_DEBUG_PRINT=0
+
+.ifndef SMALLPROG
+CPPFLAGS+=-DPROGRESS
+SRCS+= progress.c
+.endif
+
+LDADD+=-lutil
+DPADD+=${LIBUTIL}
+
+LDADD+=-lprop
+DPADD+=${LIBPROP}
+
+COPTS.ffs_appleufs.c+= -Wno-pointer-sign
+
+.if ${MACHINE_ARCH} == "m68000"
+COPTS.pass1.c+= -fno-tree-fre -fno-tree-lrs
+.endif
+.if ${MACHINE_ARCH} == "vax"
+COPTS.pass1.c+= -O0
+.endif
Index: src/sbin/newfs/Makefile.common
diff -u /dev/null src/sbin/newfs/Makefile.common:1.1
--- /dev/null Wed Feb 8 16:11:40 2017
+++ src/sbin/newfs/Makefile.common Wed Feb 8 16:11:40 2017
@@ -0,0 +1,25 @@
+# $NetBSD: Makefile.common,v 1.1 2017/02/08 16:11:40 rin Exp $
+# @(#)Makefile 8.2 (Berkeley) 3/27/94
+
+# shared stuff with src/distrib/utils/x_newfs for install media.
+# stuff not required by install media should be into Makefile.
+
+PROG= newfs
+SRCS+= dkcksum.c newfs.c mkfs.c partutil.c pathadj.c quota2_subr.c
+
+DISKLABEL=${NETBSDSRCDIR}/sbin/disklabel
+FSCK=${NETBSDSRCDIR}/sbin/fsck
+MOUNT=${NETBSDSRCDIR}/sbin/mount
+CPPFLAGS+=-DMFS -I${.CURDIR} -I${DISKLABEL} -I${FSCK} -I${MOUNT}
+CPPFLAGS+=-DGARBAGE
+
+DPADD+= ${LIBUTIL}
+LDADD+= -lutil
+
+LDADD+= -lprop
+DPADD+= ${LIBPROP}
+
+.PATH: ${DISKLABEL} ${NETBSDSRCDIR}/sys/ufs/ffs ${NETBSDSRCDIR}/sys/ufs/ufs
+.PATH: ${FSCK} ${MOUNT}
+
+COPTS.ffs_appleufs.c+= -Wno-pointer-sign