1From 1895d10a7539d055a4e0206af1e7a9e5ea32a4f7 Mon Sep 17 00:00:00 2001 2From: Juerg Haefliger <juerg.haefliger@hp.com> 3Date: Wed, 25 Mar 2015 13:59:20 +0100 4Subject: [PATCH] Support new sfdisk version 2.26 5 6The sfdisk usage with version 2.26 changed. Specifically, the option 7--show-pt-geometry and functionality for CHS have been removed. 8Also, restoring a backup MBR now needs to be done using dd. 9--- 10 bin/growpart | 28 ++++++++++------------------ 11 1 file changed, 10 insertions(+), 18 deletions(-) 12 13diff --git a/bin/growpart b/bin/growpart 14index 595c40b..d4c995b 100755 15--- a/bin/growpart 16+++ b/bin/growpart 17@@ -28,7 +28,6 @@ PART="" 18 PT_UPDATE=false 19 DRY_RUN=0 20 21-MBR_CHS="" 22 MBR_BACKUP="" 23 GPT_BACKUP="" 24 _capture="" 25@@ -133,7 +132,8 @@ bad_Usage() { 26 } 27 28 mbr_restore() { 29- sfdisk --no-reread "${DISK}" ${MBR_CHS} -I "${MBR_BACKUP}" 30+ dd if="${MBR_BACKUP}-${DISK#/dev/}-0x00000000.bak" of="${DISK}" bs=1 \ 31+ conv=notrunc 32 } 33 34 sfdisk_worked_but_blkrrpart_failed() { 35@@ -148,34 +148,26 @@ sfdisk_worked_but_blkrrpart_failed() { 36 37 mbr_resize() { 38 RESTORE_HUMAN="${TEMP_D}/recovery" 39- MBR_BACKUP="${TEMP_D}/orig.save" 40+ MBR_BACKUP="${TEMP_D}/backup" 41 42 local change_out=${TEMP_D}/change.out 43 local dump_out=${TEMP_D}/dump.out 44 local new_out=${TEMP_D}/new.out 45 local dump_mod=${TEMP_D}/dump.mod 46- local tmp="${TEMP_D}/tmp.out" 47- local err="${TEMP_D}/err.out" 48 49- local _devc cyl _w1 heads _w2 sectors _w3 tot dpart 50+ local tot dpart 51 local pt_start pt_size pt_end max_end new_size change_info 52 53- # --show-pt-geometry outputs something like 54- # /dev/sda: 164352 cylinders, 4 heads, 32 sectors/track 55- rqe sfd_geom sfdisk "${DISK}" --show-pt-geometry >"${tmp}" && 56- read _devc cyl _w1 heads _w2 sectors _w3 <"${tmp}" && 57- MBR_CHS="-C ${cyl} -H ${heads} -S ${sectors}" || 58- fail "failed to get CHS from ${DISK}" 59+ tot=$(sfdisk --list "${DISK}" | awk '{ print $(NF-1) ; exit }') || 60+ fail "failed to get total number of sectors from ${DISK}" 61 62- tot=$((${cyl}*${heads}*${sectors})) 63+ debug 1 "total number of sectors of ${DISK} is ${tot}" 64 65- debug 1 "geometry is ${MBR_CHS}. total size=${tot}" 66- rqe sfd_dump sfdisk ${MBR_CHS} --unit=S --dump "${DISK}" \ 67+ rqe sfd_dump sfdisk --dump "${DISK}" \ 68 >"${dump_out}" || 69 fail "failed to dump sfdisk info for ${DISK}" 70- 71 { 72- echo "## sfdisk ${MBR_CHS} --unit=S --dump ${DISK}" 73+ echo "## sfdisk --dump ${DISK}" 74 cat "${dump_out}" 75 } >"${RESTORE_HUMAN}" 76 [ $? -eq 0 ] || fail "failed to save sfdisk -d output" 77@@ -237,7 +229,7 @@ mbr_resize() { 78 exit 0 79 fi 80 81- LANG=C sfdisk --no-reread "${DISK}" ${MBR_CHS} --force \ 82+ LANG=C sfdisk --no-reread "${DISK}" --force \ 83 -O "${MBR_BACKUP}" <"${new_out}" >"${change_out}" 2>&1 84 ret=$? 85 [ $ret -eq 0 ] || RESTORE_FUNC="mbr_restore" 86-- 872.1.4 88