From 015352d7737074f754999e4bd64343afebcfd5a5 Mon Sep 17 00:00:00 2001 From: Andrew Podko Date: Tue, 16 Aug 2022 13:01:10 +0400 Subject: [PATCH] fix for other-config: scheduler - fixed call diskFromPartition() from block_setscheduler: it requires path without /dev/ - diskFromPartition() should remove trailing "p" for NVMe drives too - forced setup of CFQ scheduler skipped for NVMe drives, because it's unsupported Signed-off-by: Andrew Podko --- drivers/SR.py | 5 +++-- drivers/util.py | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/SR.py b/drivers/SR.py index f79a4a9a1..1420332c3 100755 --- a/drivers/SR.py +++ b/drivers/SR.py @@ -208,7 +208,7 @@ def from_uuid(session, sr_uuid): def block_setscheduler(self, dev): try: realdev = os.path.realpath(dev) - disk = util.diskFromPartition(realdev) + disk = util.diskFromPartition(realdev[5:]) # the normal case: the sr default scheduler (typically noop), # potentially overridden by SR.other_config:scheduler @@ -218,7 +218,8 @@ def block_setscheduler(self, dev): sched = self.sched # special case: CFQ if the underlying disk holds dom0's file systems. - if disk in util.dom0_disks(): + # NVMe doesn't support CFQ + if disk in util.dom0_disks() and not disk.startswith('nvme'): sched = 'cfq' util.SMlog("Block scheduler: %s (%s) wants %s" % (dev, disk, sched)) diff --git a/drivers/util.py b/drivers/util.py index a1bea703b..26ce52faf 100755 --- a/drivers/util.py +++ b/drivers/util.py @@ -1026,6 +1026,10 @@ def diskFromPartition(partition): if True in [partition.startswith(x) for x in ['cciss', 'ida', 'rd']]: numlen += 1 # need to get rid of trailing 'p' + # is it a NVMe ? nvme0n1p33 + if partition.startswith('nvme'): + numlen += 1 # need to get rid of trailing 'p' + # is it a mapper path? if partition.startswith("mapper"): if re.search("p[0-9]*$",partition):