struct udev_device *dev;
int r;
+retry:
enm = udev_enumerate_new(udev);
if (!enm)
return -ENOMEM;
}
r = udev_enumerate_scan_devices(enm);
- if (r < 0)
+ if (r < 0) {
+ if (r == -ENOENT || r == -ENODEV) {
+ std::cerr << "rbd: udev enumerate failed, retrying" << std::endl;
+ udev_enumerate_unref(enm);
+ goto retry;
+ }
goto out_enm;
+ }
l = udev_enumerate_get_list_entry(enm);
if (!l) {
string err;
int r;
+retry:
enm = udev_enumerate_new(udev);
if (!enm)
return -ENOMEM;
goto out_enm;
r = udev_enumerate_scan_devices(enm);
- if (r < 0)
+ if (r < 0) {
+ if (r == -ENOENT || r == -ENODEV) {
+ std::cerr << "rbd: udev enumerate failed, retrying" << std::endl;
+ udev_enumerate_unref(enm);
+ goto retry;
+ }
goto out_enm;
+ }
l = udev_enumerate_get_list_entry(enm);
if (!l) {
bool have_output = false;
int r;
+retry:
enm = udev_enumerate_new(udev);
if (!enm)
return -ENOMEM;
goto out_enm;
r = udev_enumerate_scan_devices(enm);
- if (r < 0)
+ if (r < 0) {
+ if (r == -ENOENT || r == -ENODEV) {
+ std::cerr << "rbd: udev enumerate failed, retrying" << std::endl;
+ udev_enumerate_unref(enm);
+ goto retry;
+ }
goto out_enm;
+ }
udev_list_entry_foreach(l, udev_enumerate_get_list_entry(enm)) {
struct udev_device *dev;