Large filesystem woes
Giorgos Keramidas
keramida at ceid.upatras.gr
Fri Jul 29 00:30:15 GMT 2005
Nice catch! I think you should report this to phk@ or ru@ who have been
the most active in the fdisk area :-)
- Giorgos
On 2005-07-28 16:40, dpk <dpk at dpk.net> wrote:
>
> I've remounted the disk readonly, and was still seeing the same errors.
> I've looked at the fdisk source and compared it to the truss output.
>
> ... /* rwmode is O_RDWR due to -u */
> fd = open(disk, rwmode);
> ... /* errno is EPERM here, from truss */
> if (fd == -1 && errno == ENXIO)
> return -2;
> if (fd == -1 && errno == EPERM && rwmode == O_RDWR) {
> ... /* this is successful: */
> fd = open(disk, O_RDONLY);
> ... /* the following opens get device not configured, or no such file or
> directory under normal operation, from truss */
> for (p = 1; p < 5; p++) {
> asprintf(&s, "%ss%d", disk, p);
> fdw = open(s, O_RDONLY);
> free(s);
> if (fdw == -1)
> continue;
> break;
> }
> ... /* ah ha! open_disk is returning -4 because the last slice had some
> error */
> if (fdw == -1)
> return -4;
>
> This change was introduced with version 1.67 of the fdisk.c file.
>
> Commenting out if (fdw == -1) return -4; allows fdisk -u to function. Here
> are the results, not changing anything:
>
> # ./fdisk -u
> ******* Working on device /dev/da0 *******
> parameters extracted from in-core disklabel are:
> cylinders=534921 heads=255 sectors/track=63 (16065 blks/cyl)
>
> Figures below won't work with BIOS for partitions not in cyl 1
> parameters to be used for BIOS calculations are:
> cylinders=534921 heads=255 sectors/track=63 (16065 blks/cyl)
>
> Do you want to change our idea of what BIOS thinks ? [n]
> Media sector size is 512
> Warning: BIOS sector numbering starts with sector 1
> Information from DOS bootblock is:
> The data for partition 1 is:
> sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
> start 63, size 75489372 (36860 Meg), flag 80 (active)
> beg: cyl 0/ head 1/ sector 1;
> end: cyl 1023/ head 254/ sector 63
> Do you want to change it? [n]
> The data for partition 2 is:
> <UNUSED>
> Do you want to change it? [n]
> The data for partition 3 is:
> <UNUSED>
> Do you want to change it? [n]
> The data for partition 4 is:
> <UNUSED>
> Do you want to change it? [n]
> Partition 1 is marked active
> Do you want to change the active partition? [n]
>
> Here are the results of ./fdisk -u when trying to add the second
> partition:
>
> # ./fdisk -u
> ******* Working on device /dev/da0 *******
> parameters extracted from in-core disklabel are:
> cylinders=534921 heads=255 sectors/track=63 (16065 blks/cyl)
>
> Figures below won't work with BIOS for partitions not in cyl 1
> parameters to be used for BIOS calculations are:
> cylinders=534921 heads=255 sectors/track=63 (16065 blks/cyl)
>
> Do you want to change our idea of what BIOS thinks ? [n] n
> Media sector size is 512
> Warning: BIOS sector numbering starts with sector 1
> Information from DOS bootblock is:
> The data for partition 1 is:
> sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
> start 63, size 75489372 (36860 Meg), flag 80 (active)
> beg: cyl 0/ head 1/ sector 1;
> end: cyl 1023/ head 254/ sector 63
> Do you want to change it? [n] n
> The data for partition 2 is:
> <UNUSED>
> Do you want to change it? [n] y
> Supply a decimal value for "sysid (165=FreeBSD)" [0] 165
> Supply a decimal value for "start" [0]
> Supply a decimal value for "size" [0]
> fdisk: ERROR: size of partition is zero
> fdisk: ERROR: failed to adjust; setting sysid to 0
> Explicitly specify beg/end address ? [n] y
> Supply a decimal value for "beginning cylinder" [0] 1024
> Supply a decimal value for "beginning head" [0]
> Supply a decimal value for "beginning sector" [0]
> Supply a decimal value for "ending cylinder" [0] 534921
> Supply a decimal value for "ending head" [0] 254
> Supply a decimal value for "ending sector" [0] 63
> sysid 0 (0000),(unused)
> start 0, size 0 (0 Meg), flag 0
> beg: cyl 0/ head 0/ sector 0;
> end: cyl 393/ head 254/ sector 63
>
> Writing it fails, but I didn't really expect it to succeed with the above
> values. There's some overflowing going on.
More information about the freebsd-questions
mailing list