mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-08 05:26:58 +02:00
Run partprobe after Ignition partition changes
This adds https://github.com/coreos/ignition/pull/1717 as downstream patch to fix https://github.com/flatcar/Flatcar/issues/1194
This commit is contained in:
parent
0866b8b3a5
commit
2acaf32699
1
changelog/bugfixes/2023-09-29-ignition-partition.md
Normal file
1
changelog/bugfixes/2023-09-29-ignition-partition.md
Normal file
@ -0,0 +1 @@
|
||||
- Triggered re-reading of partition table to fix adding partitions to the boot disk [scripts#1202](https://github.com/flatcar/scripts/pull/1202)
|
@ -0,0 +1,67 @@
|
||||
From e5c4e6bd9f3bad3b27e338e4da2f3b0b53ab1599 Mon Sep 17 00:00:00 2001
|
||||
From: Kai Lueke <kailuke@microsoft.com>
|
||||
Date: Fri, 29 Sep 2023 18:06:09 +0200
|
||||
Subject: [PATCH] sgdisk: Run partprobe after partition changes
|
||||
|
||||
The sgdisk tool does not update the kernel partition table in contrast
|
||||
to other similar tools. Often udev can detect the changes but not always
|
||||
as experienced when adding a new partition on Flatcar's boot disk.
|
||||
Instead of implicitly relying on some other component to re-read the
|
||||
kernel partition table, trigger the re-read with partprobe.
|
||||
---
|
||||
dracut/30ignition/module-setup.sh | 1 +
|
||||
internal/distro/distro.go | 2 ++
|
||||
internal/sgdisk/sgdisk.go | 5 +++++
|
||||
3 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/dracut/30ignition/module-setup.sh b/dracut/30ignition/module-setup.sh
|
||||
index ad7e80fd..3cdcb631 100755
|
||||
--- a/dracut/30ignition/module-setup.sh
|
||||
+++ b/dracut/30ignition/module-setup.sh
|
||||
@@ -33,6 +33,7 @@ install() {
|
||||
mkfs.xfs \
|
||||
mkswap \
|
||||
sgdisk \
|
||||
+ partprobe \
|
||||
useradd \
|
||||
userdel \
|
||||
usermod \
|
||||
diff --git a/internal/distro/distro.go b/internal/distro/distro.go
|
||||
index 61ca87ae..c1c13b62 100644
|
||||
--- a/internal/distro/distro.go
|
||||
+++ b/internal/distro/distro.go
|
||||
@@ -37,6 +37,7 @@ var (
|
||||
mdadmCmd = "mdadm"
|
||||
mountCmd = "mount"
|
||||
sgdiskCmd = "sgdisk"
|
||||
+ partprobeCmd = "partprobe"
|
||||
modprobeCmd = "modprobe"
|
||||
udevadmCmd = "udevadm"
|
||||
usermodCmd = "usermod"
|
||||
@@ -90,6 +91,7 @@ func GroupdelCmd() string { return groupdelCmd }
|
||||
func MdadmCmd() string { return mdadmCmd }
|
||||
func MountCmd() string { return mountCmd }
|
||||
func SgdiskCmd() string { return sgdiskCmd }
|
||||
+func PartprobeCmd() string { return partprobeCmd }
|
||||
func ModprobeCmd() string { return modprobeCmd }
|
||||
func UdevadmCmd() string { return udevadmCmd }
|
||||
func UsermodCmd() string { return usermodCmd }
|
||||
diff --git a/internal/sgdisk/sgdisk.go b/internal/sgdisk/sgdisk.go
|
||||
index 29915809..e70a3881 100644
|
||||
--- a/internal/sgdisk/sgdisk.go
|
||||
+++ b/internal/sgdisk/sgdisk.go
|
||||
@@ -121,6 +121,11 @@ func (op *Operation) Commit() error {
|
||||
if _, err := op.logger.LogCmd(cmd, "deleting %d partitions and creating %d partitions on %q", len(op.deletions), len(op.parts), op.dev); err != nil {
|
||||
return fmt.Errorf("create partitions failed: %v", err)
|
||||
}
|
||||
+ // In contrast to similar tools, sgdisk does not trigger the update of the kernel partition table
|
||||
+ cmd = exec.Command(distro.PartprobeCmd(), op.dev)
|
||||
+ if _, err := op.logger.LogCmd(cmd, "re-reading of %d deleted partitions and %d created partitions on %q", len(op.deletions), len(op.parts), op.dev); err != nil {
|
||||
+ return fmt.Errorf("re-reading partitions failed: %v", err)
|
||||
+ }
|
||||
|
||||
return nil
|
||||
}
|
||||
--
|
||||
2.41.0
|
||||
|
@ -63,6 +63,7 @@ PATCHES=(
|
||||
"${FILESDIR}/0019-docs-Add-re-added-platforms-to-docs-to-pass-tests.patch"
|
||||
"${FILESDIR}/0020-usr-share-oem-oem.patch"
|
||||
"${FILESDIR}/0021-internal-exec-stages-mount-Mount-oem.patch"
|
||||
"${FILESDIR}/0022-sgdisk-Run-partprobe-after-partition-changes.patch"
|
||||
)
|
||||
|
||||
src_compile() {
|
||||
|
@ -10,7 +10,7 @@ CROS_WORKON_REPO="https://github.com"
|
||||
if [[ "${PV}" == 9999 ]]; then
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
|
||||
else
|
||||
CROS_WORKON_COMMIT="2c0968a0c26a3f39721e76fb99368ee0fabffc7c" # flatcar-master
|
||||
CROS_WORKON_COMMIT="9eaeae2fbbdef1d6364a95192bf8e5b35dca8ed1" # flatcar-master
|
||||
KEYWORDS="amd64 arm arm64 x86"
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user