From: Kefu Chai Date: Wed, 16 Sep 2020 01:28:04 +0000 (+0800) Subject: blk/kernel: retry forever if bdev_flock_retry is 0 X-Git-Tag: v14.2.14~7^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F37842%2Fhead;p=ceph.git blk/kernel: retry forever if bdev_flock_retry is 0 retry forever if cct->_conf->bdev_flock_retry is 0. systemd-udevd is most likely the reason why ceph-osd fails to acquire the flock when "mkfs", because systemd-udevd probes all block devices when the device changes in the system using libblkid, and when systemd-udevd starts looking at the device it takes a `LOCK_SH|LOCK_NB` lock. and it releases the lock right after done with it. so normally, it only takes a jiffy, see https://github.com/systemd/systemd/blob/ee0b9e721a368742ac6fa9c3d9a33e45dc3203a2/src/shared/lockfile-util.c#L18 so, we just need to retry couple times before acquiring the lock. Fixes: https://tracker.ceph.com/issues/46124 Signed-off-by: Kefu Chai (cherry picked from commit 743b5bda6559c9be0e64617aa43ef5e06a5a6e60) Conflicts: src/blk/kernel/KernelDevice.cc - file does not exist in nautilus; made changes manually in src/os/bluestore/KernelDevice.cc --- diff --git a/src/common/options.cc b/src/common/options.cc index cd2aae894b22..a4bd01a0f18a 100644 --- a/src/common/options.cc +++ b/src/common/options.cc @@ -4339,7 +4339,11 @@ std::vector