mirror of
git://git.proxmox.com/git/pve-storage.git
synced 2025-01-24 02:04:13 +03:00
Revert "Fix #2020: use /sys to map nvmeXnY to nvmeX"
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 <f.ebner@proxmox.com> Tested-by: Stefan Hrdlicka <s.hrdlicka@proxmox.com>
This commit is contained in:
parent
4d5fb344ac
commit
668c15043f
@ -93,11 +93,7 @@ sub get_smart_data {
|
||||
my $smartdata = {};
|
||||
my $type;
|
||||
|
||||
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;
|
||||
@ -377,10 +373,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"))) {
|
||||
($data->{device}) = $device =~ m!([^/]+)$!; # strip directory and untaint
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
../nvme0
|
Loading…
x
Reference in New Issue
Block a user