}
sub get_disks {
- my ($disk, $nosmart) = @_;
+ my ($disks, $nosmart) = @_;
my $disklist = {};
my $mounted = {};
my $lvmlist = get_lvm_devices();
- # we get cciss/c0d0 but need cciss!c0d0
- if (defined($disk) && $disk =~ m|^cciss/|) {
- $disk =~ s|cciss/|cciss!|;
+ my $disk_regex = ".*";
+ if (defined($disks)) {
+ if (!ref($disks)) {
+ $disks = [ $disks ];
+ } elsif (ref($disks) ne 'ARRAY') {
+ die "disks is not a string or array reference\n";
+ }
+ # we get cciss/c0d0 but need cciss!c0d0
+ map { s|cciss/|cciss!| } @$disks;
+
+ $disk_regex = "(?:" . join('|', @$disks) . ")";
}
- dir_glob_foreach('/sys/block', '.*', sub {
+ dir_glob_foreach('/sys/block', $disk_regex, sub {
my ($dev) = @_;
- return if defined($disk) && $disk ne $dev;
# whitelisting following devices
# hdX: ide block device
# sdX: sd block device
$found_zfs = 1;
}
- if ($journalhash->{"$partpath/$part"}) {
- $journal_count++ if $journalhash->{"$partpath/$part"} == 1;
- $db_count++ if $journalhash->{"$partpath/$part"} == 2;
- $wal_count++ if $journalhash->{"$partpath/$part"} == 3;
- $bluestore = 1 if $journalhash->{"$partpath/$part"} == 4;
+ if (my $journal_part = $journalhash->{"$partpath/$part"}) {
+ $journal_count++ if $journal_part == 1;
+ $db_count++ if $journal_part == 2;
+ $wal_count++ if $journal_part == 3;
+ $bluestore = 1 if $journal_part == 4;
}
if (!dir_is_empty("$sysdir/$part/holders") && !$found_lvm) {
}
});
- if ($ceph_volume_infos->{$devpath}) {
- $journal_count += $ceph_volume_infos->{$devpath}->{journal} // 0;
- $db_count += $ceph_volume_infos->{$devpath}->{db} // 0;
- $wal_count += $ceph_volume_infos->{$devpath}->{wal} // 0;
- if ($ceph_volume_infos->{$devpath}->{osdid}) {
- $osdid = $ceph_volume_infos->{$devpath}->{osdid};
- $bluestore = 1 if $ceph_volume_infos->{$devpath}->{bluestore};
+ if (my $ceph_volume = $ceph_volume_infos->{$devpath}) {
+ $journal_count += $ceph_volume->{journal} // 0;
+ $db_count += $ceph_volume->{db} // 0;
+ $wal_count += $ceph_volume->{wal} // 0;
+ if ($ceph_volume->{osdid}) {
+ $osdid = $ceph_volume->{osdid};
+ $bluestore = 1 if $ceph_volume->{bluestore};
}
}