[parted-devel] FYI, preparation for 2048-byte sector sizes across the board

Jim Meyering jim at meyering.net
Fri Jun 1 19:08:44 UTC 2007


Otavio Salvador <otavio at debian.org> wrote:

> Jim Meyering <jim at meyering.net> writes:
>
>> diff --git a/libparted/labels/bsd.c b/libparted/labels/bsd.c
>> index 747a9c5..26a8b60 100644
>> --- a/libparted/labels/bsd.c
>> +++ b/libparted/labels/bsd.c
>> @@ -141,30 +142,45 @@ alpha_bootblock_checksum (char *boot) {
> <...>
>>  static int
>>  bsd_probe (const PedDevice *dev)
>>  {
>> -	char		boot[512];
>> -	BSDRawLabel	*label;
>> +	BSDRawLabel	*partition;
>>
>>  	PED_ASSERT (dev != NULL, return 0);
>>
>> -        if (dev->sector_size != 512)
>> +        if (dev->sector_size < 512)
>>                  return 0;
>
> Shouldn't it be:
>            if (dev->sector_size%512 != 0)
>                    return 0;

Thanks for looking at it, but no.

First, your replacement would mistakenly allow a dev->sector_size value
of 0 through.  More importantly, there is already plenty of code (e.g.,
in linux.c) that ensures it is a multiple of 512, so it would be redundant
to check for that in each label/*.c's *_probe function.

BTW, there are still many functions that won't work with larger sector size.
For example, I've just noticed that bsd.c's _probe_and_add_boot_code
assumes 512-byte sectors, too, but it's not exercised by the label
reading/writing code that I'm using to test things in this first round.



More information about the parted-devel mailing list