File rear1172a-gpt_sync_mbr.patch of Package rear1172a.32115

diff -rp -U8 rear-1.17.2.SLE12-SP1-btrfs/usr/share/rear/layout/prepare/GNU/Linux/10_include_partition_code.sh rear-1.17.2.SLE12-SP1-btrfs.gpt_sync_mbr/usr/share/rear/layout/prepare/GNU/Linux/10_include_partition_code.sh
--- rear-1.17.2.SLE12-SP1-btrfs/usr/share/rear/layout/prepare/GNU/Linux/10_include_partition_code.sh	2015-06-08 09:50:38.000000000 +0200
+++ rear-1.17.2.SLE12-SP1-btrfs.gpt_sync_mbr/usr/share/rear/layout/prepare/GNU/Linux/10_include_partition_code.sh	2015-11-03 14:51:36.000000000 +0100
@@ -100,33 +100,36 @@ create_partitions() {
         Log "No partitions on device $device."
         return 0
     fi
 
     if [[ -z "$label" ]] ; then
         label="gpt"
         ### msdos label types are detected earlier.
     fi
+    # For 'gpt_sync_mbr' labeled disks create_partitions was called e.g. as
+    #   create_partitions /dev/sda gpt_sync_mbr
+    # so that $label is not empty but still set to 'gpt_sync_mbr' here.
 
     cat >> "$LAYOUT_CODE" <<EOF
 LogPrint "Creating partitions for disk $device ($label)"
 my_udevsettle
 parted -s $device mklabel $label >&2
 my_udevsettle
 EOF
 
     local block_size device_size sysfs_name
     if [[ -b $device ]] ; then
         sysfs_name=$(get_sysfs_name "$device")
         if [[ "$sysfs_name" ]] && [[ -d "/sys/block/$sysfs_name" ]] ; then
             block_size=$( get_block_size "$sysfs_name" )
             device_size=$( get_disk_size  "$sysfs_name" )
 
             ### GPT disks need 33 LBA blocks at the end of the disk
-            if [[ "$label" == "gpt" ]] ; then
+            if [[ "$label" == "gpt" || "$label" == "gpt_sync_mbr" ]] ; then
                 device_size=$(( device_size - 33*block_size ))
                 if [[ "$MIGRATION_MODE" ]] ; then
                     Log "Size reductions of GPT partitions probably needed."
                 fi
             fi
         fi
     fi
 
@@ -218,17 +221,17 @@ EOF
             (
             echo "my_udevsettle"
             echo "parted -s $device set $number $flag on >&2"
             echo "my_udevsettle"
             ) >> $LAYOUT_CODE
         done
 
         # Explicitly name GPT partitions.
-        if [[ "$label" = "gpt" ]] && [[ "$name" != "rear-noname" ]] ; then
+        if [[ "$label" = "gpt" || "$label" == "gpt_sync_mbr" ]] && [[ "$name" != "rear-noname" ]] ; then
             (
             echo "my_udevsettle"
             echo "parted -s $device name $number '\"$name\"' >&2"
             echo "my_udevsettle"
             ) >> $LAYOUT_CODE
         fi
     done < <(grep "^part $device " $LAYOUT_FILE)
 
diff -rp -U8 rear-1.17.2.SLE12-SP1-btrfs/usr/share/rear/layout/save/GNU/Linux/20_partition_layout.sh rear-1.17.2.SLE12-SP1-btrfs.gpt_sync_mbr/usr/share/rear/layout/save/GNU/Linux/20_partition_layout.sh
--- rear-1.17.2.SLE12-SP1-btrfs/usr/share/rear/layout/save/GNU/Linux/20_partition_layout.sh	2015-08-03 14:14:39.000000000 +0200
+++ rear-1.17.2.SLE12-SP1-btrfs.gpt_sync_mbr/usr/share/rear/layout/save/GNU/Linux/20_partition_layout.sh	2015-10-28 14:16:13.000000000 +0100
@@ -108,17 +108,17 @@ extract_partitions() {
                 ### set to primary until flags are known
                 declare type="primary"
                 sed -i /^$partition_nr\ /s/$/\ primary/ $TMP_DIR/partitions
             fi
         done < $TMP_DIR/partitions-data
     fi
 
     ### find partition name for gpt disks.
-    if [[ "$disk_label" = "gpt" ]] ; then
+    if [[ "$disk_label" = "gpt" || "$disk_label" == "gpt_sync_mbr" ]] ; then
         if [[ "$FEATURE_PARTED_MACHINEREADABLE" ]] ; then
             while read partition_nr size start junk ; do
                 type=$(grep "^$partition_nr:" $TMP_DIR/parted | cut -d ":" -f "6")
                 if [[ -z "$type" ]] ; then
                     type="rear-noname"
                 fi
                 type=$(echo "$type" | sed -e 's/ /0x20/g') # replace spaces with 0x20 in name field
                 sed -i /^$partition_nr\ /s/$/\ $type/ $TMP_DIR/partitions
@@ -251,15 +251,19 @@ Log "Saving disk partitions."
     for disk in /sys/block/* ; do
         blockd=${disk#/sys/block/}
         if [[ $blockd = hd* || $blockd = sd* || $blockd = cciss* || $blockd = vd* || $blockd = xvd* ]] ; then
             devname=$(get_device_name $disk)
             devsize=$(get_disk_size ${disk#/sys/block/})
 
             disktype=$(parted -s $devname print | grep -E "Partition Table|Disk label" | cut -d ":" -f "2" | tr -d " ")
 
+            echo "# Disk $devname"
+            echo "# Format: disk <devname> <size(bytes)> <partition label type>"
             echo "disk $devname $devsize $disktype"
 
+            echo "# Partitions on $devname"
+            echo "# Format: part <device> <partition size(bytes)> <partition start(bytes)> <partition type|name> <flags> /dev/<partition>"
             extract_partitions "$devname"
         fi
     done
 
 ) >> $DISKLAYOUT_FILE
openSUSE Build Service is sponsored by