From: Ilya Dryomov Date: Thu, 7 Sep 2017 14:05:20 +0000 (+0200) Subject: krbd: factor out enumerate_devices() X-Git-Tag: v13.0.1~963^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9e9598dbf4f166ce347684e0aab354d05e9b3ee4;p=ceph.git krbd: factor out enumerate_devices() Signed-off-by: Ilya Dryomov --- diff --git a/src/krbd.cc b/src/krbd.cc index 7c5ade3dcec0..50292c18ff2d 100644 --- a/src/krbd.cc +++ b/src/krbd.cc @@ -376,38 +376,50 @@ out_enm: 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;