From e0b02ba9bdccf04bef6dc44ccabe8cb5b77cf6ee 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 b03fb00352a4..d2aaf33edbd8 100755 --- a/src/ceph-disk/ceph_disk/main.py +++ b/src/ceph-disk/ceph_disk/main.py @@ -1713,6 +1713,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.47.3