diff options
author | iedowse <iedowse@FreeBSD.org> | 2002-05-30 01:44:35 +0000 |
---|---|---|
committer | iedowse <iedowse@FreeBSD.org> | 2002-05-30 01:44:35 +0000 |
commit | a337baf2224c311a908bef1db45083c5555b491d (patch) | |
tree | 838c7efc689b852eb6aad61645dbaf43155e2359 | |
parent | 078e6c47218e792542f7e9c1c3ecfc67d557219a (diff) | |
download | FreeBSD-src-a337baf2224c311a908bef1db45083c5555b491d.zip FreeBSD-src-a337baf2224c311a908bef1db45083c5555b491d.tar.gz |
Fix some serious brain damage in the default block/frag/cpg parameters
that are used if none at all are specified for a partition. Don't
keep replaying the last field if we run out of fields when processing
a line. Use a 8:1 frag:block ratio for both defaults.
More work here is required. I think disklabel should not attempt
to choose default filesystem parameters, and instead let newfs pick
any defaults if required.
PR: i386/38703
Reported by: Martin Kraemer <Martin.Kraemer@Fujitsu-Siemens.com>
-rw-r--r-- | sbin/bsdlabel/bsdlabel.c | 16 | ||||
-rw-r--r-- | sbin/disklabel/disklabel.c | 16 |
2 files changed, 14 insertions, 18 deletions
diff --git a/sbin/bsdlabel/bsdlabel.c b/sbin/bsdlabel/bsdlabel.c index 45964b6..e7417ba 100644 --- a/sbin/bsdlabel/bsdlabel.c +++ b/sbin/bsdlabel/bsdlabel.c @@ -94,7 +94,7 @@ static const char rcsid[] = #define DEFAULT_NEWFS_CPG 16U #define BIG_NEWFS_BLOCK 16384U -#define BIG_NEWFS_FRAG 4096U +#define BIG_NEWFS_FRAG 2048U #define BIG_NEWFS_CPG 64U #if defined(__i386__) || defined(__ia64__) @@ -1169,8 +1169,6 @@ getasciilabel(FILE *f, struct disklabel *lp) return (1); \ } else { \ cp = tp, tp = word(cp); \ - if (tp == NULL) \ - tp = cp; \ (n) = atoi(cp); \ } \ } while (0) @@ -1183,8 +1181,6 @@ getasciilabel(FILE *f, struct disklabel *lp) } else { \ char *tmp; \ cp = tp, tp = word(cp); \ - if (tp == NULL) \ - tp = cp; \ (n) = strtol(cp,&tmp,10); \ if (tmp) (w) = *tmp; \ } \ @@ -1278,12 +1274,14 @@ getasciipartspec(char *tp, struct disklabel *lp, int part, int lineno) /* * FIX! These are too low, but are traditional */ - pp->p_fsize = DEFAULT_NEWFS_BLOCK; - pp->p_frag = (unsigned char) DEFAULT_NEWFS_FRAG; + pp->p_fsize = DEFAULT_NEWFS_FRAG; + pp->p_frag = DEFAULT_NEWFS_BLOCK / + DEFAULT_NEWFS_FRAG; pp->p_cpg = DEFAULT_NEWFS_CPG; } else { - pp->p_fsize = BIG_NEWFS_BLOCK; - pp->p_frag = (unsigned char) BIG_NEWFS_FRAG; + pp->p_fsize = BIG_NEWFS_FRAG; + pp->p_frag = BIG_NEWFS_BLOCK / + BIG_NEWFS_FRAG; pp->p_cpg = BIG_NEWFS_CPG; } } diff --git a/sbin/disklabel/disklabel.c b/sbin/disklabel/disklabel.c index 45964b6..e7417ba 100644 --- a/sbin/disklabel/disklabel.c +++ b/sbin/disklabel/disklabel.c @@ -94,7 +94,7 @@ static const char rcsid[] = #define DEFAULT_NEWFS_CPG 16U #define BIG_NEWFS_BLOCK 16384U -#define BIG_NEWFS_FRAG 4096U +#define BIG_NEWFS_FRAG 2048U #define BIG_NEWFS_CPG 64U #if defined(__i386__) || defined(__ia64__) @@ -1169,8 +1169,6 @@ getasciilabel(FILE *f, struct disklabel *lp) return (1); \ } else { \ cp = tp, tp = word(cp); \ - if (tp == NULL) \ - tp = cp; \ (n) = atoi(cp); \ } \ } while (0) @@ -1183,8 +1181,6 @@ getasciilabel(FILE *f, struct disklabel *lp) } else { \ char *tmp; \ cp = tp, tp = word(cp); \ - if (tp == NULL) \ - tp = cp; \ (n) = strtol(cp,&tmp,10); \ if (tmp) (w) = *tmp; \ } \ @@ -1278,12 +1274,14 @@ getasciipartspec(char *tp, struct disklabel *lp, int part, int lineno) /* * FIX! These are too low, but are traditional */ - pp->p_fsize = DEFAULT_NEWFS_BLOCK; - pp->p_frag = (unsigned char) DEFAULT_NEWFS_FRAG; + pp->p_fsize = DEFAULT_NEWFS_FRAG; + pp->p_frag = DEFAULT_NEWFS_BLOCK / + DEFAULT_NEWFS_FRAG; pp->p_cpg = DEFAULT_NEWFS_CPG; } else { - pp->p_fsize = BIG_NEWFS_BLOCK; - pp->p_frag = (unsigned char) BIG_NEWFS_FRAG; + pp->p_fsize = BIG_NEWFS_FRAG; + pp->p_frag = BIG_NEWFS_BLOCK / + BIG_NEWFS_FRAG; pp->p_cpg = BIG_NEWFS_CPG; } } |