* [PATCH] expand-on-first-boot: Check size before resizing
@ 2022-07-08 11:15 Tobias Schmidl
2022-07-08 15:05 ` Henning Schild
0 siblings, 1 reply; 2+ messages in thread
From: Tobias Schmidl @ 2022-07-08 11:15 UTC (permalink / raw)
To: isar-users
Cc: Florian Bezdeka, Jan Kiszka, Henning Schild,
Felix Mößbauer, Tobias Schmidl
If the disk is too small, resizing might have detrimental effects.
Because of aligning issues, it could happen the the final partition is
_smaller_ than desired, which might lead to an unusable last partition.
Signed-off-by: Tobias Schmidl <tobiasschmidl@siemens.com>
---
.../files/expand-last-partition.sh | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh b/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh
index c0edde7..3b944be 100755
--- a/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh
+++ b/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh
@@ -22,6 +22,23 @@ if [ "${ROOT_DEV}" = "${BOOT_DEV}" ]; then
exit 1
fi
+# this value is in blocks. Normally a block has 512 bytes.
+BUFFER_SIZE=32768
+BOOT_DEV_NAME=${BOOT_DEV##*/}
+DISK_SIZE="$(cat /sys/class/block/"${BOOT_DEV_NAME}"/size)"
+ALL_PARTS_SIZE=0
+for PARTITION in /sys/class/block/"${BOOT_DEV_NAME}"[1-9]*; do
+ PART_SIZE=$(cat "${PARTITION}"/size)
+ ALL_PARTS_SIZE=$((ALL_PARTS_SIZE + PART_SIZE))
+done
+echo "Disk ${BOOT_DEV}: ${DISK_SIZE}, all partitions combined: ${ALL_PARTS_SIZE}" >&2
+
+MINIMAL_SIZE=$((ALL_PARTS_SIZE + BUFFER_SIZE))
+if [ "$DISK_SIZE" -lt "$MINIMAL_SIZE" ]; then
+ echo "Disk is not big enough, won't resize. Current size: $DISK_SIZE, minimal size for resizing: $MINIMAL_SIZE" >&2
+ exit 0
+fi
+
LAST_PART="$(sfdisk -d "${BOOT_DEV}" 2>/dev/null | tail -1 | cut -d ' ' -f 1)"
# Transform the partition table as follows:
--
2.36.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] expand-on-first-boot: Check size before resizing
2022-07-08 11:15 [PATCH] expand-on-first-boot: Check size before resizing Tobias Schmidl
@ 2022-07-08 15:05 ` Henning Schild
0 siblings, 0 replies; 2+ messages in thread
From: Henning Schild @ 2022-07-08 15:05 UTC (permalink / raw)
To: Tobias Schmidl
Cc: isar-users, Florian Bezdeka, Jan Kiszka, Felix Mößbauer
Am Fri, 8 Jul 2022 13:15:21 +0200
schrieb Tobias Schmidl <tobiasschmidl@siemens.com>:
> If the disk is too small, resizing might have detrimental effects.
> Because of aligning issues, it could happen the the final partition is
> _smaller_ than desired, which might lead to an unusable last
> partition.
>
> Signed-off-by: Tobias Schmidl <tobiasschmidl@siemens.com>
> ---
> .../files/expand-last-partition.sh | 17
> +++++++++++++++++ 1 file changed, 17 insertions(+)
>
> diff --git
> a/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh
> b/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh
> index c0edde7..3b944be 100755 ---
> a/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh
> +++
> b/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh
> @@ -22,6 +22,23 @@ if [ "${ROOT_DEV}" = "${BOOT_DEV}" ]; then exit 1
> fi +# this value is in blocks. Normally a block has 512 bytes.
> +BUFFER_SIZE=32768
> +BOOT_DEV_NAME=${BOOT_DEV##*/}
> +DISK_SIZE="$(cat /sys/class/block/"${BOOT_DEV_NAME}"/size)"
> +ALL_PARTS_SIZE=0
> +for PARTITION in /sys/class/block/"${BOOT_DEV_NAME}"[1-9]*; do
> + PART_SIZE=$(cat "${PARTITION}"/size)
> + ALL_PARTS_SIZE=$((ALL_PARTS_SIZE + PART_SIZE))
> +done
> +echo "Disk ${BOOT_DEV}: ${DISK_SIZE}, all partitions combined:
This is too verbose, one echo before we step out is enough.
> ${ALL_PARTS_SIZE}" >&2 +
> +MINIMAL_SIZE=$((ALL_PARTS_SIZE + BUFFER_SIZE))
> +if [ "$DISK_SIZE" -lt "$MINIMAL_SIZE" ]; then
> + echo "Disk is not big enough, won't resize. Current size:
> $DISK_SIZE, minimal size for resizing: $MINIMAL_SIZE" >&2
"Disk is practically already full, doing nothing."
All the numbers are maybe for someone who runs bash -x ... which they
can always do. All that runs in a context where human readable output
is not useful, just a summary message on how it all ended ...
> + exit 0
> +fi
> +
> LAST_PART="$(sfdisk -d "${BOOT_DEV}" 2>/dev/null | tail -1 | cut -d
> ' ' -f 1)"
> # Transform the partition table as follows:
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-07-08 15:05 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-08 11:15 [PATCH] expand-on-first-boot: Check size before resizing Tobias Schmidl
2022-07-08 15:05 ` Henning Schild
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox