return r;
}
-static int spec_to_devno_and_krbd_id(struct udev *udev, const char *pool,
- const char *image, const char *snap,
- dev_t *pdevno, string *pid)
+static int enumerate_devices(struct udev_enumerate *enm, const char *pool,
+ const char *image, const char *snap)
{
- struct udev_enumerate *enm;
- struct udev_list_entry *l;
- struct udev_device *dev;
- unsigned int maj, min = 0;
- string err;
int r;
- enm = udev_enumerate_new(udev);
- if (!enm)
- return -ENOMEM;
-
r = udev_enumerate_add_match_subsystem(enm, "rbd");
if (r < 0)
- goto out_enm;
+ return r;
r = udev_enumerate_add_match_sysattr(enm, "pool", pool);
if (r < 0)
- goto out_enm;
+ return r;
r = udev_enumerate_add_match_sysattr(enm, "name", image);
if (r < 0)
- goto out_enm;
+ return r;
r = udev_enumerate_add_match_sysattr(enm, "current_snap", snap);
if (r < 0)
- goto out_enm;
+ return r;
r = udev_enumerate_scan_devices(enm);
+ if (r < 0)
+ return r;
+
+ return 0;
+}
+
+static int spec_to_devno_and_krbd_id(struct udev *udev, const char *pool,
+ const char *image, const char *snap,
+ dev_t *pdevno, string *pid)
+{
+ struct udev_enumerate *enm;
+ struct udev_list_entry *l;
+ struct udev_device *dev;
+ unsigned int maj, min = 0;
+ string err;
+ int r;
+
+ enm = udev_enumerate_new(udev);
+ if (!enm)
+ return -ENOMEM;
+
+ r = enumerate_devices(enm, pool, image, snap);
if (r < 0)
goto out_enm;