From 47a4b611b3745526fec6e58284dd3843d2f200a8 Mon Sep 17 00:00:00 2001 From: "Taylor, Stephen (st053q)" Date: Fri, 17 May 2019 11:20:51 -0600 Subject: [PATCH] Do not use blkid to create partition symlinks This removes the use of blkid to find disk partitions and their associated partition UUIDs. Instead /proc/partitions is parsed to enumerate disk partitions and sgdisk is used to extract their partition UUIDs. This prevents a race condition from causing a deadlock between ceph-osd and krbd when deploying ceph-osd pods. Change-Id: I875f8c0565ce6efb7cd2052725af37dec3bb3a59 --- ceph-osd/templates/bin/osd/_common.sh.tpl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ceph-osd/templates/bin/osd/_common.sh.tpl b/ceph-osd/templates/bin/osd/_common.sh.tpl index a2e1249a4..a3afbe96e 100644 --- a/ceph-osd/templates/bin/osd/_common.sh.tpl +++ b/ceph-osd/templates/bin/osd/_common.sh.tpl @@ -164,8 +164,10 @@ function udev_settle { # On occassion udev may not make the correct device symlinks for Ceph, just in case we make them manually mkdir -p /dev/disk/by-partuuid - for dev in $(timeout 60 blkid -o device | grep -Ev 'block|rbd'); do - ln -s "../../$(echo ${dev} | awk -F '/' '{print $3}')" "/dev/disk/by-partuuid/$(blkid -o value -s PARTUUID ${dev})" || true + for dev in $(awk '!/rbd/{print $4}' /proc/partitions | grep "[0-9]"); do + diskdev=$(echo "${dev//[!a-z]/}") + partnum=$(echo "${dev//[!0-9]/}") + ln -s "../../${dev}" "/dev/disk/by-partuuid/$(sgdisk -i ${partnum} /dev/${diskdev} | awk '/Partition unique GUID/{print tolower($4)}')" || true done }