From: Ilya Dryomov Date: Fri, 27 Sep 2019 15:14:08 +0000 (+0200) Subject: krbd: get rid of poll() timeout X-Git-Tag: v12.2.13~28^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=69a3c3530219b7fbc697d4e19ec34b794f28db28;p=ceph.git krbd: get rid of poll() timeout This timeout was added as a (very poor) workaround for an issue addressed in commit 42dd1eae630f ("krbd: fix rbd map hang due to udev return subsystem unordered"). Signed-off-by: Ilya Dryomov (cherry picked from commit ffb66ff7106b9d200a7da355199ab362fb611c31) Conflicts: src/krbd.cc [ ceph_abort_msgf() not in luminous ] --- diff --git a/src/krbd.cc b/src/krbd.cc index 39188ada5a1..b2a58c8d64a 100644 --- a/src/krbd.cc +++ b/src/krbd.cc @@ -42,8 +42,6 @@ using namespace std; -const static int POLL_TIMEOUT=120000; - struct krbd_ctx { CephContext *cct; struct udev *udev; @@ -182,7 +180,6 @@ static int wait_for_udev_add(struct udev_monitor *mon, const char *pool, { struct udev_device *bus_dev = NULL; std::vector block_dev_vec; - int r; /* * Catch /sys/devices/rbd// and wait for the corresponding @@ -195,12 +192,8 @@ static int wait_for_udev_add(struct udev_monitor *mon, const char *pool, fds[0].fd = udev_monitor_get_fd(mon); fds[0].events = POLLIN; - r = poll(fds, 1, POLL_TIMEOUT); - if (r > 0) { - r = 0; - } else { - r = (r == 0) ? -ETIMEDOUT : -errno; - break; + if (poll(fds, 1, -1) < 0) { + ceph_abort(); } dev = udev_monitor_receive_device(mon); @@ -264,7 +257,7 @@ done: udev_device_unref(p); } - return r; + return 0; } static int do_map(struct udev *udev, const char *pool, const char *image, @@ -494,16 +487,12 @@ static int wait_for_udev_remove(struct udev_monitor *mon, dev_t devno) for (;;) { struct pollfd fds[1]; struct udev_device *dev; - int r; fds[0].fd = udev_monitor_get_fd(mon); fds[0].events = POLLIN; - r = poll(fds, 1, POLL_TIMEOUT); - if (r < 0) - return -errno; - - if (r == 0) - return -ETIMEDOUT; + if (poll(fds, 1, -1) < 0) { + ceph_abort(); + } dev = udev_monitor_receive_device(mon); if (!dev)