File fix-dvh-update.patch of Package parted

# fixes (bnc#397210)
# see comment in the patch for explanation
diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
index 0107dd2..041208a 100644
--- a/libparted/arch/linux.c
+++ b/libparted/arch/linux.c
@@ -2248,7 +2248,15 @@ static int
 _disk_sync_part_table (PedDisk* disk)
 {
         int     i;
-        int     last = PED_MAX (ped_disk_get_last_partition_num (disk), 16);
+        int     last;
+
+	/* parted treats DVH directory entries as logical partitions with number > 16;
+	 * we don't want to inform kernel about directory entries
+	 */
+	if (strcmp (disk->type->name, "dvh") == 0)
+		last = 16;
+	else
+	 	last = PED_MAX (ped_disk_get_last_partition_num (disk), 16);
         int*    rets = ped_malloc(sizeof(int) * last);
         int*    errnums = ped_malloc(sizeof(int) * last);
         int     ret = 1;
@@ -2470,8 +2478,16 @@ static int
 _dm_reread_part_table (PedDisk* disk)
 {
         int     rc = 1;
-        int     last = PED_MAX (ped_disk_get_last_partition_num (disk), 16);
         int     i;
+        int     last;
+
+	/* parted treats DVH directory entries as partitions logical with number > 16;
+	 * we don't want to inform kernel about directory entries
+	 */
+	if (strcmp (disk->type->name, "dvh") == 0)
+		last = 16;
+	else
+	 	last = PED_MAX (ped_disk_get_last_partition_num (disk), 16);
 
         sync();
         if (!_dm_remove_parts(disk->dev))
openSUSE Build Service is sponsored by