From 36d3fca4fc2153f96b8528f3a406a744423f7c90 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 17 Mar 2025 11:19:04 +0100 Subject: [PATCH] fix: Fallback to POSIX fallocate (#932) --- src/disk.sh | 22 ++++++++++++++-------- src/install.sh | 10 ++++++---- src/reset.sh | 1 + 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/disk.sh b/src/disk.sh index e65c6b2..1f2da5c 100644 --- a/src/disk.sh +++ b/src/disk.sh @@ -141,10 +141,12 @@ createDisk() { else # Create an empty file - if ! fallocate -l "$DATA_SIZE" "$DISK_FILE"; then - if ! truncate -s "$DATA_SIZE" "$DISK_FILE"; then - rm -f "$DISK_FILE" - error "$FAIL" && exit 77 + if ! fallocate -l "$DATA_SIZE" "$DISK_FILE" &>/dev/null; then + if ! fallocate -l -x "$DATA_SIZE" "$DISK_FILE"; then + if ! truncate -s "$DATA_SIZE" "$DISK_FILE"; then + rm -f "$DISK_FILE" + error "$FAIL" && exit 77 + fi fi fi @@ -219,9 +221,11 @@ resizeDisk() { else # Resize file by allocating more space - if ! fallocate -l "$DATA_SIZE" "$DISK_FILE"; then - if ! truncate -s "$DATA_SIZE" "$DISK_FILE"; then - error "$FAIL" && exit 75 + if ! fallocate -l "$DATA_SIZE" "$DISK_FILE" &>/dev/null; then + if ! fallocate -l -x "$DATA_SIZE" "$DISK_FILE"; then + if ! truncate -s "$DATA_SIZE" "$DISK_FILE"; then + error "$FAIL" && exit 75 + fi fi fi @@ -296,8 +300,10 @@ convertDisk() { if [[ "$ALLOCATE" != [Nn]* ]]; then # Work around qemu-img bug CUR_SIZE=$(stat -c%s "$TMP_FILE") - if ! fallocate -l "$CUR_SIZE" "$TMP_FILE"; then + if ! fallocate -l "$CUR_SIZE" "$TMP_FILE" &>/dev/null; then + if ! fallocate -l -x "$CUR_SIZE" "$TMP_FILE"; then error "Failed to allocate $CUR_SIZE bytes for $DISK_DESC image $TMP_FILE" + fi fi fi fi diff --git a/src/install.sh b/src/install.sh index 82203a7..79709e9 100644 --- a/src/install.sh +++ b/src/install.sh @@ -328,10 +328,12 @@ if [[ "${FS,,}" == "btrfs" ]]; then fi fi -if ! fallocate -l "$SYSTEM_SIZE" "$SYSTEM"; then - if ! truncate -s "$SYSTEM_SIZE" "$SYSTEM"; then - rm -f "$SYSTEM" - error "Could not allocate file $SYSTEM for the system disk." && exit 98 +if ! fallocate -l "$SYSTEM_SIZE" "$SYSTEM" &>/dev/null; then + if ! fallocate -l -x "$SYSTEM_SIZE" "$SYSTEM"; then + if ! truncate -s "$SYSTEM_SIZE" "$SYSTEM"; then + rm -f "$SYSTEM" + error "Could not allocate file $SYSTEM for the system disk." && exit 98 + fi fi fi diff --git a/src/reset.sh b/src/reset.sh index 2c79284..693f1e3 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -63,6 +63,7 @@ if [ -z "${CPU// /}" ] && grep -qi "model:" <<< "$CPI"; then fi CPU="${CPU// CPU/}" +CPU="${CPU// 6 Core/}" CPU="${CPU// 8 Core/}" CPU="${CPU// 16 Core/}" CPU="${CPU// 32 Core/}"