On Wed, Nov 06, 2002 at 01:27:10PM -0700, John-David Childs wrote: > On Sun, 2002-11-03 at 04:01, Bernd Walter wrote: > > > > 1T disks and bigger are not supported under -stable. > > Perhaps that should be > 1TB disks are not supported under stable...I > have a 1TB RAID Array (Qlogic 2200 FC Copper, Chaparrel RAID > Controller)...although I have to admit that losing 200G of it sucks hard > > /dev/da0c 1011G 834G 96G 90% /ftp > > tunefs: soft updates: (-n) disabled > tunefs: maximum contiguous block count: (-a) 3 > tunefs: rotational delay between contiguous blocks: (-d) 0 ms > tunefs: maximum blocks per file in a cylinder group: (-e) 8192 > tunefs: average file size: (-f) 16384 > tunefs: average number of files in a directory: (-s) 64 > tunefs: minimum percentage of free space: (-m) 8% > tunefs: optimization preference: (-o) time > > Performance also isn't up to par...I'm only able to get ~ 14MB/sec.
With some minor modifications to disklabel, you can label a 2 Tb disk. We've done it with a 1.4Tb disk: Filesystem Size Used Avail Capacity Mounted on /dev/da20a 669G 246G 370G 40% /rapraid0 /dev/da20e 669G 499G 117G 81% /rapraid1 Patch attached (Don't mind the code, it's a quick hack) Zlo
--- /usr/src/sbin/disklabel/disklabel.c Mon Aug 26 21:43:04 2002 +++ /usr/src/sbin/disklabel/disklabel.c Wed Oct 23 11:37:25 2002 @@ -927,6 +927,32 @@ return (NULL); } +unsigned int +atoui(const char *cp, char **end_p) +{ + unsigned int res, prev; + + res = 0; + prev = 0; + while (*cp) + { + if (!isdigit(*cp)) + { + if (end_p) + *end_p = cp; + return res; + } + res = (res * 10) + (*cp - '0'); + if (res < prev) + return 0; + prev = res; + cp++; + } + if (end_p) + *end_p = cp; + return res; +} + /* * Read an ascii label in from fd f, * in the same format as that put out by display(), @@ -1074,13 +1100,14 @@ continue; } if (streq(cp, "sectors/unit")) { - v = atoi(tp); - if (v <= 0) { + unsigned int uv; + uv = atoui(tp, NULL); + if (uv <= 0) { fprintf(stderr, "line %d: %s: bad %s\n", lineno, tp, cp); errors++; } else - lp->d_secperunit = v; + lp->d_secperunit = uv; continue; } if (streq(cp, "rpm")) { @@ -1178,7 +1205,7 @@ return (1); \ } else { \ cp = tp, tp = word(cp); \ - (n) = atoi(cp); \ + (n) = atoui(cp, NULL); \ } \ } while (0) @@ -1190,7 +1217,7 @@ } else { \ char *tmp; \ cp = tp, tp = word(cp); \ - (n) = strtol(cp,&tmp,10); \ + (n) = atoui(cp,&tmp); \ if (tmp) (w) = *tmp; \ } \ } while (0) @@ -1205,7 +1232,7 @@ struct partition *pp; char *cp; char **cpp; - int v; + unsigned int v; pp = &lp->d_partitions[part]; cp = NULL;