From c3b802ac2f8bfe84fcff240cd4ede1390c409c7d Mon Sep 17 00:00:00 2001 From: Maksim An Date: Thu, 21 Oct 2021 20:42:57 -0700 Subject: [PATCH] pr feedback: make fixed number of retries and remove timeout Signed-off-by: Maksim An --- .../guest/storage/devicemapper/devicemapper.go | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/internal/guest/storage/devicemapper/devicemapper.go b/internal/guest/storage/devicemapper/devicemapper.go index 976b02133e..6ea25edcd3 100644 --- a/internal/guest/storage/devicemapper/devicemapper.go +++ b/internal/guest/storage/devicemapper/devicemapper.go @@ -270,7 +270,7 @@ func CreateDevice(name string, flags CreateFlags, targets []Target) (_ string, e } // RemoveDevice removes a device-mapper device and its associated device node. -func RemoveDevice(name string) error { +func RemoveDevice(name string) (err error) { rm := func() error { f, err := openMapper() if err != nil { @@ -283,18 +283,14 @@ func RemoveDevice(name string) error { // This is workaround for "device or resource busy" error, which occasionally happens after the device mapper // target has been unmounted. - for { - if err := rm(); err != nil { - select { - case <-time.After(time.Second): - return fmt.Errorf("timeout removing device %s", name) - default: - time.Sleep(10 * time.Millisecond) - continue - } + for i := 0; i < 10; i++ { + if err = rm(); err != nil { + time.Sleep(10 * time.Millisecond) + continue } - return nil + break } + return } func removeDevice(f *os.File, name string) error {