[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[dm-devel] kpartx bug fixes for dos extended partition [1/4]



Hi Christophe,

the latest kpartx generates wrong mapping for
MS-DOS extended partitions.
Attached patch fixes the problem.
Please consider to apply.

Consider you created the following partition table.
  # parted /dev/sdc p
  Disk geometry for /dev/sdc: 0.000-34686.000 megabytes
  Disk label type: msdos
  Minor    Start       End     Type      Filesystem  Flags
  1          0.031      7.844  primary
  2          7.844     31.376  extended
  5          7.875     23.532  logical
  6         23.563     31.376  logical

kpartx should generate the following mappings:
  # dmsetup table|grep sdc|sort
  sdc1: 0 16002 linear 8:32 63
  sdc5: 0 32067 linear 8:32 16128
  sdc6: 0 16002 linear 8:32 48258

However, actually it generates:
  # dmsetup table|grep sdc|sort
  sdc1: 0 16002 linear 8:32 63
  sdc5: 0 32067 linear 8:32 16128
  sdc6: 0 16065 linear 8:32 80325
  sdc7: 0 16002 linear 8:32 48258

Thanks,
Nick
Don't count (hidden) extended partition table entry as partition.

Otherwise, kpartx cause inconsistent numbering of partitions and
also generate useless/misleading mappings for such entries.


DOS extended partition is implemented by chain of 2-slot tables.
Both Linux kernel and fdisk/parted doesn't count the link to the next
extended partition table as single partition.

--- multipath-tools.orig/kpartx/dos.c	2005-12-01 08:36:57.000000000 +0900
+++ multipath-tools/kpartx/dos.c	2005-12-02 04:06:25.000000000 +0900
@@ -47,8 +47,7 @@ read_extended_partition(int fd, struct p
 					here = start + le32_to_cpu(p.start_sect);
 					moretodo = 1;
 				}
-				else
-					continue;
+				continue;
 			}
 			if (n < ns) {
 				sp[n].start = here + le32_to_cpu(p.start_sect);

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]