Browse Source

qubes.ResizeDisk: handle dmroot being a symlink

In non-template-based-VMs it can be just a symlink (depending on
initramfs version).
Marek Marczykowski-Górecki 6 năm trước cách đây
mục cha
commit
a59ac1b4f9
1 tập tin đã thay đổi với 10 bổ sung8 xóa
  1. 10 8
      qubes-rpc/qubes.ResizeDisk

+ 10 - 8
qubes-rpc/qubes.ResizeDisk

@@ -13,15 +13,17 @@ case $disk_name in
     root)
         # force some read to refresh device size
         head /dev/xvda > /dev/null
-        new_size=$(cat /sys/block/xvda/size)
-        ro=$(/sys/block/xvda/ro)
-        if [ "$ro" -eq 1 ]; then
-            new_table="0 $new_size snapshot /dev/xvda /dev/xvdc2 N 16"
-        else
-            new_table="0 $new_size linear /dev/xvda 0"
+        if [ "$(stat -Lc %t /dev/mapper/dmroot)" != "ca" ]; then
+            new_size=$(cat /sys/block/xvda/size)
+            ro=$(/sys/block/xvda/ro)
+            if [ "$ro" -eq 1 ]; then
+                new_table="0 $new_size snapshot /dev/xvda /dev/xvdc2 N 16"
+            else
+                new_table="0 $new_size linear /dev/xvda 0"
+            fi
+            dmsetup load dmroot --table "$new_table"
+            dmsetup resume dmroot
         fi
-        dmsetup load dmroot --table "$new_table"
-        dmsetup resume dmroot
         resize2fs /dev/mapper/dmroot
         ;;
     *)