summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoriedowse <iedowse@FreeBSD.org>2002-05-30 01:44:35 +0000
committeriedowse <iedowse@FreeBSD.org>2002-05-30 01:44:35 +0000
commita337baf2224c311a908bef1db45083c5555b491d (patch)
tree838c7efc689b852eb6aad61645dbaf43155e2359
parent078e6c47218e792542f7e9c1c3ecfc67d557219a (diff)
downloadFreeBSD-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.c16
-rw-r--r--sbin/disklabel/disklabel.c16
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;
}
}
OpenPOWER on IntegriCloud