x86: sysupgrade: move partition table change check to platform_check_image
The staged sysupgrade will prevent us from using ask_bool in platform_do_upgrade; therefore, the check is moved to platform_check_image. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
This commit is contained in:
		| @@ -1,13 +1,37 @@ | |||||||
| platform_check_image() { | platform_check_image() { | ||||||
|  | 	local diskdev partdev diff | ||||||
| 	[ "$#" -gt 1 ] && return 1 | 	[ "$#" -gt 1 ] && return 1 | ||||||
|  |  | ||||||
| 	case "$(get_magic_word "$1")" in | 	case "$(get_magic_word "$1")" in | ||||||
| 		eb48|eb63) return 0;; | 		eb48|eb63) ;; | ||||||
| 		*) | 		*) | ||||||
| 			echo "Invalid image type" | 			echo "Invalid image type" | ||||||
| 			return 1 | 			return 1 | ||||||
| 		;; | 		;; | ||||||
| 	esac | 	esac | ||||||
|  |  | ||||||
|  | 	export_bootdevice && export_partdevice diskdev 0 || { | ||||||
|  | 		echo "Unable to determine upgrade device" | ||||||
|  | 		return 1 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	get_partitions "/dev/$diskdev" bootdisk | ||||||
|  |  | ||||||
|  | 	#extract the boot sector from the image | ||||||
|  | 	get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b 2>/dev/null | ||||||
|  |  | ||||||
|  | 	get_partitions /tmp/image.bs image | ||||||
|  |  | ||||||
|  | 	#compare tables | ||||||
|  | 	diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)" | ||||||
|  |  | ||||||
|  | 	rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image | ||||||
|  |  | ||||||
|  | 	if [ -n "$diff" ]; then | ||||||
|  | 		echo "Partition layout has changed. Full image will be written." | ||||||
|  | 		ask_bool 0 "Abort" && exit 1 | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
| } | } | ||||||
|  |  | ||||||
| platform_copy_config() { | platform_copy_config() { | ||||||
| @@ -36,9 +60,6 @@ platform_do_upgrade() { | |||||||
| 			#compare tables | 			#compare tables | ||||||
| 			diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)" | 			diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)" | ||||||
| 			if [ -n "$diff" ]; then | 			if [ -n "$diff" ]; then | ||||||
| 				echo "Partition layout is changed.  Full image will be written." |  | ||||||
| 				ask_bool 0 "Abort" && exit |  | ||||||
|  |  | ||||||
| 				get_image "$@" | dd of="/dev/$diskdev" bs=4096 conv=fsync | 				get_image "$@" | dd of="/dev/$diskdev" bs=4096 conv=fsync | ||||||
| 				return 0 | 				return 0 | ||||||
| 			fi | 			fi | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Matthias Schiffer
					Matthias Schiffer