From b3f9439cfd9141ddde9874c06fd43d346c10c5da Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 7 Oct 2017 22:15:11 +0800 Subject: [PATCH] ceph-disk: retry on OSError we are likely to 1) create partition, for instance, sdc1 2) partprobe sdc 3) udevadm settle 4) check the device by its path: /dev/sdc1 but there is chance that the uevent sent from kernel fails to reach udev before we call "udevadm", hence "/dev/sdc1" does not exist even after "udevadm settle" returns. so we retry in case of OSError here. Signed-off-by: Kefu Chai (cherry picked from commit 4f82dfb9e761a09484e6ba3bd027da535162783e) --- src/ceph-disk/ceph_disk/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ceph-disk/ceph_disk/main.py b/src/ceph-disk/ceph_disk/main.py index ec05c9bc90e54..0ad3f1afd1c28 100755 --- a/src/ceph-disk/ceph_disk/main.py +++ b/src/ceph-disk/ceph_disk/main.py @@ -1845,6 +1845,7 @@ class DevicePartition(object): return self.ptype_map[name]['ready'] @staticmethod + @retry(OSError) def factory(path, dev, args): dmcrypt_type = CryptHelpers.get_dmcrypt_type(args) if ((path is not None and is_mpath(path)) or -- 2.39.5