]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
krbd: retry on an empty list from udev_enumerate_scan_devices()
authorIlya Dryomov <idryomov@gmail.com>
Thu, 24 Oct 2019 15:35:23 +0000 (17:35 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 4 Nov 2019 11:43:20 +0000 (12:43 +0100)
commit9cf994a5bbd27f0df31eaf4cfb063bcca63dc613
treea810e4a81261f732e2538361dcef86f851530e4d
parentd145fe15cef905ba1d75d6b900f87b1145d7f887
krbd: retry on an empty list from udev_enumerate_scan_devices()

systemd 219 doesn't have the issue that is worked around in the
previous commit, but has a different one: udev_enumerate_scan_devices()
always succeeds, but sometimes returns an empty list when the device is
actually there.  This happens rarely and at random so I haven't been
able to get to the bottom of it yet, but it looks like another similar
race condition in libudev.

Since an empty list is expected if the device isn't there, retry just
twice with a small sleep in-between.  This appears to be enough: I got
7 occurrences per 600000 "rbd unmap" invocations, all of which needed
a single retry:

  rbd: udev enumerate missed a device, tries = 1

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit bd37a72e0ec783a1ba91e63e8d96f0bc06007060)

Conflicts:
src/krbd.cc [ krbd_spec not in luminous ]
src/krbd.cc