Here are the diffs to allow disklabel to correctly create partitions >
1TB (up to 2TB is useful with UFS2) pending a different partitionning
scheme. It also allows you to correctly make smaller partitions beyond
1TB which is nice if you don't want to waste 800GB on an array :-)


permission to commit please?
(pending comments by others)

(also the sysinstall changes posted before)
(also the bluetooth code)

Index: disklabel.c
===================================================================
RCS file: /usr/cvs/src/sbin/disklabel/disklabel.c,v
retrieving revision 1.62
diff -u -r1.62 disklabel.c
--- disklabel.c 8 Oct 2002 12:13:19 -0000       1.62
+++ disklabel.c 15 Nov 2002 23:53:04 -0000
@@ -943,7 +943,8 @@
        const char **cpp;
        unsigned int part;
        char *tp, line[BUFSIZ];
-       int v, lineno = 0, errors = 0;
+       unsigned int v;
+       int lineno = 0, errors = 0;
        int i;
 
        lp->d_bbsize = BBSIZE;                          /* XXX */
@@ -973,7 +974,7 @@
                                }
                        if (cpp < &dktypenames[DKMAXTYPES])
                                continue;
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if ((unsigned)v >= DKMAXTYPES)
                                fprintf(stderr, "line %d:%s %d\n", lineno,
                                    "Warning, unknown disk type", v);
@@ -1006,8 +1007,8 @@
                        }
                        continue;
                }
-               if (sscanf(cp, "%d partitions", &v) == 1) {
-                       if (v == 0 || (unsigned)v > MAXPARTITIONS) {
+               if (sscanf(cp, "%u partitions", &v) == 1) {
+                       if (v == 0 || v > MAXPARTITIONS) {
                                fprintf(stderr,
                                    "line %d: bad # of partitions\n", lineno);
                                lp->d_npartitions = MAXPARTITIONS;
@@ -1027,7 +1028,7 @@
                        continue;
                }
                if (streq(cp, "bytes/sector")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v <= 0 || (v % DEV_BSIZE) != 0) {
                                fprintf(stderr,
                                    "line %d: %s: bad sector size\n",
@@ -1038,7 +1039,7 @@
                        continue;
                }
                if (streq(cp, "sectors/track")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v <= 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1048,7 +1049,7 @@
                        continue;
                }
                if (streq(cp, "sectors/cylinder")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v <= 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1058,7 +1059,7 @@
                        continue;
                }
                if (streq(cp, "tracks/cylinder")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v <= 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1068,7 +1069,7 @@
                        continue;
                }
                if (streq(cp, "cylinders")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v <= 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1078,7 +1079,7 @@
                        continue;
                }
                if (streq(cp, "sectors/unit")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v <= 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1088,7 +1089,7 @@
                        continue;
                }
                if (streq(cp, "rpm")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v <= 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1098,7 +1099,7 @@
                        continue;
                }
                if (streq(cp, "interleave")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v <= 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1108,7 +1109,7 @@
                        continue;
                }
                if (streq(cp, "trackskew")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v < 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1118,7 +1119,7 @@
                        continue;
                }
                if (streq(cp, "cylinderskew")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v < 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1128,7 +1129,7 @@
                        continue;
                }
                if (streq(cp, "headswitch")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v < 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1138,7 +1139,7 @@
                        continue;
                }
                if (streq(cp, "track-to-track seek")) {
-                       v = atoi(tp);
+                       v = strtoul(tp, NULL, 0);
                        if (v < 0) {
                                fprintf(stderr, "line %d: %s: bad %s\n",
                                    lineno, tp, cp);
@@ -1182,7 +1183,7 @@
                return (1); \
        } else { \
                cp = tp, tp = word(cp); \
-               (n) = atoi(cp); \
+               (n) = strtoul(cp, NULL, 0); \
        } \
 } while (0)
 
@@ -1194,7 +1195,7 @@
        } else { \
                char *tmp; \
                cp = tp, tp = word(cp); \
-               (n) = strtol(cp,&tmp,10); \
+               (n) = strtoul(cp, &tmp, 10); \
                if (tmp) (w) = *tmp; \
        } \
 } while (0)
@@ -1209,7 +1210,7 @@
        struct partition *pp;
        char *cp;
        const char **cpp;
-       int v;
+       unsigned int v;
 
        pp = &lp->d_partitions[part];
        cp = NULL;
@@ -1370,7 +1371,7 @@
                                                hog_part = i;
                                }
                        } else {
-                               off_t size;
+                               u_int64_t size;
 
                                size = pp->p_size;
                                switch (part_size_type[i]) {
@@ -1517,7 +1518,7 @@
                            "partition %c: offset past end of unit\n", part);
                        errors++;
                }
-               if (pp->p_offset + pp->p_size > lp->d_secperunit) {
+               if ((pp->p_offset + pp->p_size) > lp->d_secperunit) {
                        fprintf(stderr,
                        "partition %c: partition extends past end of unit\n",
                            part);

Reply via email to