From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id D9352907E4 for ; Fri, 2 Sep 2022 13:36:01 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id CFB072F8C5 for ; Fri, 2 Sep 2022 13:35:31 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 2 Sep 2022 13:35:30 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id D4D8D44024 for ; Fri, 2 Sep 2022 13:35:29 +0200 (CEST) From: Fiona Ebner To: pve-devel@lists.proxmox.com Date: Fri, 2 Sep 2022 13:35:25 +0200 Message-Id: <20220902113525.28988-1-f.ebner@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -1.555 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% ENA_SUBJ_ODD_CASE 3.2 Subject has odd case KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [RFC storage] Revert "Fix #2020: use /sys to map nvmeXnY to nvmeX" X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Sep 2022 11:36:01 -0000 This reverts commit c3442aa5546b029a524928d10c7ecabe0024c137. Nowadays, relying on 'readlink /sys/block/nvmeXnY/device' won't always lead to the correct device, as reported in the community forum[0], where it results in '../../nvme-subsys0' and there's no matching entry under '/dev/'. Since Linux kernel 5.4, in particular commit 733e4b69d508 ("nvme: Assign subsys instance from first ctrl"), the problematic situation from bug #2020 shouldn't happen anymore. Stated more clearly by the commit's author here[1]: > Indeed, that commit will make the naming a bit more sane and will > definitely prevent mistaken identity. It is still possible to > observe controllers with instances that don't match their > namespaces, but it is impossible to get a namespace instance that > matches a non-owning controller. The only other user of get_sysdir_info() doesn't use the 'device' entry, so reverting that part is fine too. [0] https://forum.proxmox.com/threads/113962/ [1] https://github.com/linux-nvme/nvme-cli/issues/510#issuecomment-552508647 Signed-off-by: Fiona Ebner --- Alternatively, we might want to switch to passing the namespaced device name directly to smartctl. According to 'man smartcl', it's supported and it works for me and the user in the forum. However, AFAICT, the stated support was already present in smartmontools 6.5, but c9bd3d2 ("fix #1123: modify NVME device path for SMART support") references that version and mentions that it's necessary to drop the namespace, so really not sure. PVE/Diskmanage.pm | 12 ++---------- test/disk_tests/nvme_smart/nvme0n1/device | 1 - .../nvme_smart/{nvme0 => nvme0n1/device}/model | 0 3 files changed, 2 insertions(+), 11 deletions(-) delete mode 120000 test/disk_tests/nvme_smart/nvme0n1/device rename test/disk_tests/nvme_smart/{nvme0 => nvme0n1/device}/model (100%) diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm index 8ed7a8b..7eb193f 100644 --- a/PVE/Diskmanage.pm +++ b/PVE/Diskmanage.pm @@ -95,11 +95,8 @@ sub get_smart_data { my $returncode = 0; - if ($disk =~ m!^/dev/(nvme\d+n\d+)$!) { - my $info = get_sysdir_info("/sys/block/$1"); - $disk = "/dev/".($info->{device} - or die "failed to get nvme controller device for $disk\n"); - } + $disk =~ s/n\d+$// + if $disk =~ m!^/dev/nvme\d+n\d+$!; my $cmd = [$SMARTCTL, '-H']; push @$cmd, '-A', '-f', 'brief' if !$healthonly; @@ -406,11 +403,6 @@ sub get_sysdir_info { $data->{vendor} = file_read_firstline("$sysdir/device/vendor") || 'unknown'; $data->{model} = file_read_firstline("$sysdir/device/model") || 'unknown'; - if (defined(my $device = readlink("$sysdir/device"))) { - # strip directory and untaint: - ($data->{device}) = $device =~ m!([^/]+)$!; - } - return $data; } diff --git a/test/disk_tests/nvme_smart/nvme0n1/device b/test/disk_tests/nvme_smart/nvme0n1/device deleted file mode 120000 index e890f3e..0000000 --- a/test/disk_tests/nvme_smart/nvme0n1/device +++ /dev/null @@ -1 +0,0 @@ -../nvme0 \ No newline at end of file diff --git a/test/disk_tests/nvme_smart/nvme0/model b/test/disk_tests/nvme_smart/nvme0n1/device/model similarity index 100% rename from test/disk_tests/nvme_smart/nvme0/model rename to test/disk_tests/nvme_smart/nvme0n1/device/model -- 2.30.2