From 4be012a4cd623fee74292128df924a4e9f38238b Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Mon, 12 Dec 2022 13:33:09 +0100 Subject: [PATCH] disk manage: pass full NVMe device path to smartctl This essentially reverts commit c9bd3d2 ("fix #1123: modify NVME device path for SMART support"). The man page for smartctl states > Use the forms "/dev/nvme[0-9]" (broadcast namespace) or > "/dev/nvme[0-9]n[1-9]" (specific namespace 1-9) for NVMe devices. so it should be fine to pass the path with the specific namespace to smartctl. But that text was already present in the man page of version 6.5, which is the version the commit c9bd3d2 talks about. It might be that it was necessary to drop the specific namespace for the version backported from Stretch to Jessie (the bug report mentions that that version was used[0]), but it's not quite clear. With current versions, passing in the path with the specific namespace did work as expected[1], even on a device with multiple namespaces set up tested locally. In PBS, the path queried via udev::Device::from_syspath("/sys/block/{name}") is passed to smartctl and that also included the specific namespace on the systems I tested with a short script. So pass the full path to make things a little bit simpler and to avoid potential future issues like bug #2020[2]. [0]: https://bugzilla.proxmox.com/show_bug.cgi?id=1123#c3 [1]: https://forum.proxmox.com/threads/113962/post-493185 [2]: https://bugzilla.proxmox.com/show_bug.cgi?id=2020 Signed-off-by: Fiona Ebner --- PVE/Diskmanage.pm | 2 -- test/disk_tests/nvme_smart/{nvme0_smart => nvme0n1_smart} | 0 2 files changed, 2 deletions(-) rename test/disk_tests/nvme_smart/{nvme0_smart => nvme0n1_smart} (100%) diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm index f682e59..a311ffd 100644 --- a/PVE/Diskmanage.pm +++ b/PVE/Diskmanage.pm @@ -93,8 +93,6 @@ sub get_smart_data { my $smartdata = {}; my $type; - $disk =~ s/n\d+$// if $disk =~ m!^/dev/nvme\d+n\d+$!; - my $cmd = [$SMARTCTL, '-H']; push @$cmd, '-A', '-f', 'brief' if !$healthonly; push @$cmd, $disk; diff --git a/test/disk_tests/nvme_smart/nvme0_smart b/test/disk_tests/nvme_smart/nvme0n1_smart similarity index 100% rename from test/disk_tests/nvme_smart/nvme0_smart rename to test/disk_tests/nvme_smart/nvme0n1_smart