Date: Fri, 29 Jul 2005 03:30:05 +0300 From: Giorgos Keramidas <keramida@ceid.upatras.gr> To: dpk <dpk@dpk.net> Cc: freebsd-questions@freebsd.org Subject: Re: Large filesystem woes Message-ID: <20050729003005.GA99178@gothmog.gr> In-Reply-To: <20050728161608.Q79761@shared10.hosting.flyingcroc.net> References: <20050719145822.W23753@shared10.hosting.flyingcroc.net> <441x5tk3e9.fsf@be-well.ilk.org> <20050720064637.Q23753@shared10.hosting.flyingcroc.net> <20050721100327.GA16179@beatrix.daedalusnetworks.priv> <20050728154356.A79761@shared10.hosting.flyingcroc.net> <20050728225701.GB46755@gothmog.gr> <20050728155804.T79761@shared10.hosting.flyingcroc.net> <20050728231035.GA60181@gothmog.gr> <20050728161608.Q79761@shared10.hosting.flyingcroc.net>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050729003005.GA99178>