Extended partition mapping wrong size

From: Phillip Susi
Date: Mon Mar 29 2010 - 12:21:38 EST


I've been investigating a problem I ran into trying to create partitions
in sector mode and found that the first logical partition can not begin
on the very first sector of the extended partition, immediately
following the EBR. This apparently is because the kernel creates a dev
node to represent the extended partition and sizes it to two sectors. I
could have sworn that the kernel did not used to create a device for the
extended partition itself, but I wondered why it was 2 sectors long. I
found this:

from fs/partitions/msdos.c:

/* prevent someone doing mkfs or mkswap on an
extended partition, but leave room for LILO */
put_partition(state, slot, start, size == 1 ? 1 : 2);

This appears to set the size of the device to 2 sectors, unless the
extended partition is only 1 sector long. Shouldn't the size be
whatever length there is between the start of the extended partition,
and the first logical partition it contains? So if there are 63 sectors
there, as is the usual case when using cylinder alignment, then the
device node would expose all of those, but if there is no space, then
the device node should only be 1 sector for the EBR, otherwise it
overlays the first sector of the logical partition.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/