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() {
 | 
			
		||||
	local diskdev partdev diff
 | 
			
		||||
	[ "$#" -gt 1 ] && return 1
 | 
			
		||||
 | 
			
		||||
	case "$(get_magic_word "$1")" in
 | 
			
		||||
		eb48|eb63) return 0;;
 | 
			
		||||
		eb48|eb63) ;;
 | 
			
		||||
		*)
 | 
			
		||||
			echo "Invalid image type"
 | 
			
		||||
			return 1
 | 
			
		||||
		;;
 | 
			
		||||
	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() {
 | 
			
		||||
@@ -36,9 +60,6 @@ platform_do_upgrade() {
 | 
			
		||||
			#compare tables
 | 
			
		||||
			diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
 | 
			
		||||
			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
 | 
			
		||||
				return 0
 | 
			
		||||
			fi
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user