Use systemd-growfs (#1133)

* Use systemd-growfs instead of resize2fs (#1106)

Since systemd 236 systemd has a built-in file system growing mechanism.
The mechanism relies on the kernels online file system resize
capabilities instead of the external resize2fs utility. Online resizing
is supposedly much faster since the kernel takes care of things.

This also makes sure that external file systems get resized which
previously have not been taken care of.

* Drop HA OS specific file system resizing

Since we have systemd-growfs in place now we can drop our file system
resizing code.

* Make sure /dev/disk/by-label/hassos-data is present after resizing

Note: systemd will retry mnt-data.mount later, so at least in theory
this shouldn't really matter. However, the journal has a lot of churn
due to that reordering.
This commit is contained in:
Stefan Agner 2020-12-28 23:46:55 +01:00
parent 0e7310e8db
commit 103ddb150b
No known key found for this signature in database
GPG Key ID: AE01353D1E44747D
17 changed files with 30 additions and 20 deletions

View File

@ -35,7 +35,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_IBT=y BR2_PACKAGE_LINUX_FIRMWARE_IBT=y

View File

@ -37,7 +37,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y

View File

@ -37,7 +37,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y

View File

@ -37,7 +37,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y

View File

@ -37,7 +37,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8=y BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8=y

View File

@ -36,7 +36,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y

View File

@ -38,7 +38,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y

View File

@ -38,7 +38,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y

View File

@ -38,7 +38,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y

View File

@ -38,7 +38,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y

View File

@ -38,7 +38,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y

View File

@ -38,7 +38,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y

View File

@ -38,7 +38,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y

View File

@ -39,7 +39,6 @@ BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_JQ=y BR2_PACKAGE_JQ=y
BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_E2IMAGE=y BR2_PACKAGE_E2FSPROGS_E2IMAGE=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_SQUASHFS=y
BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y

View File

@ -6,7 +6,7 @@ After=hassos-expand.service
Before=umount.target local-fs.target Before=umount.target local-fs.target
Conflicts=umount.target Conflicts=umount.target
After=systemd-fsck@dev-disk-by\x2dlabel-hassos\x2ddata.service After=systemd-fsck@dev-disk-by\x2dlabel-hassos\x2ddata.service
Wants=systemd-fsck@dev-disk-by\x2dlabel-hassos\x2ddata.service Wants=systemd-fsck@dev-disk-by\x2dlabel-hassos\x2ddata.service systemd-growfs@mnt-data.service
[Mount] [Mount]
What=/dev/disk/by-label/hassos-data What=/dev/disk/by-label/hassos-data

View File

@ -0,0 +1,18 @@
#
# Extracted from fstab-generator
#
[Unit]
Description=Grow File System on %f
Documentation=man:systemd-growfs@.service(8)
DefaultDependencies=no
BindsTo=%i.mount
Conflicts=shutdown.target
After=%i.mount
Before=shutdown.target local-fs.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/systemd/systemd-growfs %f
TimeoutSec=0

View File

@ -52,11 +52,17 @@ else
sfdisk -V "${DEVICE_ROOT}" sfdisk -V "${DEVICE_ROOT}"
fi fi
# Reload partition table
partx -u "${DEVICE_ROOT}" partx -u "${DEVICE_ROOT}"
udevadm settle
# Resize filesystem # Make sure /dev/disk/by-label/hassos-data is actually present before exiting.
echo "[INFO] Resize hassos-data filesystem" # This avoids a race condition with mnt-data.mount which might fail to bind
e2fsck -y "${DEVICE_CHILD}" # otherwise:
resize2fs -f "${DEVICE_CHILD}" # Bound to unit dev-disk-by\x2dlabel-hassos\x2ddata.device, but unit isn't active.
if ! systemctl start "dev-disk-by\\x2dlabel-hassos\\x2ddata.device"; then
echo "[ERROR] Data partition not found!"
exit 1
fi
echo "[INFO] Finish hassos-data resizing" echo "[INFO] Finished hassos-data partition resizing"