diskmanage: get_partnum: fix check

Not replacing it with return, because the current behavior is dying:
    Can't "next" outside a loop block
and the single existing caller in pve-manager's API2/Ceph/OSD.pm does not check
the return value.

Also check for $st, which can be undefined in case a non-existing path was
provided. This also led to dying previously:
    Can't call method "mode" on an undefined value

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
Fabian Ebner
2021-04-20 14:07:50 +02:00
committed by Thomas Lamprecht
parent 415dc3985d
commit ceb7b1ed09

View File

@ -750,7 +750,9 @@ sub get_partnum {
my $st = stat($part_path);
next if !$st->mode || !S_ISBLK($st->mode) || !$st->rdev;
die "error detecting block device '$part_path'\n"
if !$st || !$st->mode || !S_ISBLK($st->mode) || !$st->rdev;
my $major = PVE::Tools::dev_t_major($st->rdev);
my $minor = PVE::Tools::dev_t_minor($st->rdev);
my $partnum_path = "/sys/dev/block/$major:$minor/";