Confirmed that this revised patch continues to work for the >32G SDHC cards.
On Fri, Mar 18, 2016 at 8:14 AM, David Cantrell <[email protected]> wrote: > Right, the 512b block size thing. Thanks for the update on this. I'll > give it a try on the 32GB card. > > On Thu, Mar 17, 2016 at 7:53 PM, Brian C. Lane <[email protected]> wrote: > >> dev->length is in 512b blocks, sectors should also be in the same units, >> so divide sector_size by PED_SECTOR_SIZE_DEFAULT. >> >> CHS sectors also start at 1, so add 1 to it and use 2 as the fallback >> default. >> >> FWIW the HDIO_GETGEO ioctl returns this on a 2048 sector 512b/sector >> scsi_debug >> disk: >> >> cyl=1024 heads=1 sectors=2 >> >> With this change all tests pass, but it should also be tried with the >> 32G SD card. >> --- >> libparted/arch/linux.c | 12 +++--------- >> 1 file changed, 3 insertions(+), 9 deletions(-) >> >> diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c >> index 6422c56..326b956 100644 >> --- a/libparted/arch/linux.c >> +++ b/libparted/arch/linux.c >> @@ -871,7 +871,7 @@ _device_probe_geometry (PedDevice* dev) >> >> if (!ioctl (arch_specific->fd, BLKSSZGET, §or_size)) { >> /* get the sector count first */ >> - dev->bios_geom.sectors = sector_size; >> + dev->bios_geom.sectors = 1 + (sector_size / >> PED_SECTOR_SIZE_DEFAULT); >> dev->bios_geom.heads = 255; >> } else if (!ioctl (arch_specific->fd, HDIO_GETGEO, &geometry) >> && geometry.sectors && geometry.heads) { >> @@ -885,20 +885,14 @@ _device_probe_geometry (PedDevice* dev) >> _("Could not determine sector size for %s: %s.\n" >> "Using the default sector size (%lld)."), >> dev->path, strerror (errno), >> PED_SECTOR_SIZE_DEFAULT); >> - dev->bios_geom.sectors = PED_SECTOR_SIZE_DEFAULT; >> + dev->bios_geom.sectors = 2; >> dev->bios_geom.heads = 255; >> } >> >> - dev->hw_geom.heads = dev->bios_geom.heads; >> - dev->hw_geom.sectors = dev->bios_geom.sectors; >> - >> dev->bios_geom.cylinders >> = dev->length / (dev->bios_geom.heads >> * dev->bios_geom.sectors); >> - dev->hw_geom.cylinders >> - = dev->length / (dev->hw_geom.heads >> - * dev->hw_geom.sectors); >> - >> + dev->hw_geom = dev->bios_geom; >> return 1; >> } >> >> -- >> 2.5.0 >> >> > -- > David Cantrell <[email protected]> > Manager, Installer Engineering Team > Red Hat, Inc. | Westford, MA | EST5EDT > -- David Cantrell <[email protected]> Manager, Installer Engineering Team Red Hat, Inc. | Westford, MA | EST5EDT

