From 00402fa2f193cc6eb700df796900af08d921eb25 Mon Sep 17 00:00:00 2001 From: Itxaka Date: Fri, 10 Oct 2025 14:15:16 +0200 Subject: [PATCH] fix: retry partition table re-read on failure (#992) --- pkg/elemental/elemental.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/elemental/elemental.go b/pkg/elemental/elemental.go index 495679d..574d783 100644 --- a/pkg/elemental/elemental.go +++ b/pkg/elemental/elemental.go @@ -23,6 +23,7 @@ import ( "os" "path/filepath" "syscall" + "time" "github.com/kairos-io/kairos-sdk/types" @@ -78,6 +79,20 @@ func (e *Elemental) PartitionAndFormatDevice(i v1.SharedInstallSpec) error { return err } + // Try to make the kernel re-read the partition table a couple of times + for i := 0; i < 5; i++ { + err = disk.ReReadPartitionTable() + if err == nil { + break + } + e.config.Logger.Debugf("Reread table attempt %d failed: %s", i+1, err) + if i < 5-1 { + e.config.Logger.Debugf("Waiting %d seconds before next attempt", 5) + } + // Wait a bit before retrying + time.Sleep(time.Duration(i) * time.Second) + + } err = disk.ReReadPartitionTable() if err != nil { e.config.Logger.Errorf("Reread table: %s", err)