log::l("PATCH: 2006-fix-parsing-dmraid"); use fsedit; package fsedit; my $old_handle_dmraid = \&handle_dmraid; undef *handle_dmraid; *handle_dmraid = sub { my ($drives) = @_; @$drives > 1 or return; devices::make($_->{device}) foreach @$drives; require fs::dmraid; log::l("PATCH: 2006-fix-parsing-dmraid (inside handle_dmraid)"); undef *fs::dmraid::_raid_devices_raw; *fs::dmraid::_raid_devices_raw = sub { map { chomp; log::l("got: $_"); my %l; @l{qw(pv format vg level status size)} = split(':'); if_(defined $l{size}, \%l); } fs::dmraid::call_dmraid('-ccr'); }; undef *fs::dmraid::_sets_raw; *fs::dmraid::_sets_raw = sub { map { chomp; log::l("got: $_"); my %l; @l{qw(name size stride level status subsets devs spares)} = split(':'); if_(defined $l{spares}, \%l); } fs::dmraid::call_dmraid('-ccs'); }; &$old_handle_dmraid; };