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