diff options
Diffstat (limited to 'perl-install/fs/proc_partitions.pm')
| -rw-r--r-- | perl-install/fs/proc_partitions.pm | 18 | 
1 files changed, 11 insertions, 7 deletions
| diff --git a/perl-install/fs/proc_partitions.pm b/perl-install/fs/proc_partitions.pm index 8a1bc8ab0..ea714ca5b 100644 --- a/perl-install/fs/proc_partitions.pm +++ b/perl-install/fs/proc_partitions.pm @@ -1,4 +1,4 @@ -package fs::proc_partitions; # $Id: proc_partitions.pm 232285 2007-12-03 16:41:16Z pixel $ +package fs::proc_partitions;  use common; @@ -6,8 +6,12 @@ use common;  sub read_raw() {      my (undef, undef, @all) = cat_("/proc/partitions");      grep { -	$_->{size} != 1 &&	  # skip main extended partition -	$_->{size} != 0x3fffffff; # skip cdroms (otherwise stops cd-audios) +	$_->{size} != 1 &&	      # skip main extended partition +	$_->{size} != 0x3fffffff &&   # skip cdroms (otherwise stops cd-audios) +	$_->{dev} !~ /mmcblk\d+[^p]/; # only keep partitions like mmcblk0p0 +	                              # not mmcblk0rpmb or mmcblk0boot0 as they +				      # are not in the partition table and +				      # things will break (mga#15759)      } map {   	my %l;   	@l{qw(major minor size dev)} = split;  @@ -16,7 +20,7 @@ sub read_raw() {  }  sub read { -    my ($hds) = @_; +    my ($hds, $o_ignore_fstype) = @_;      my @all = read_raw();      my ($parts, $_disks) = partition { $_->{dev} =~ /\d$/ && $_->{dev} !~ /^(sr|scd)/ } @all; @@ -36,7 +40,7 @@ sub read {  	$part->{size} *= 2;	# from KB to sectors  	$part->{start} = $prev_part ? $prev_part->{start} + $prev_part->{size} : 0;  	require fs::type; -	put_in_hash($part, fs::type::type_subpart_from_magic($part)); +	put_in_hash($part, fs::type::type_subpart_from_magic($part)) if !$o_ignore_fstype;  	$prev_part = $part;  	delete $part->{dev}; # cleanup      } @@ -50,7 +54,7 @@ sub compare {      my @l1 = partition_table::get_normal_parts($hd); -    my @l2 = grep { $_->{rootDevice} eq $hd->{device} } &read([$hd]); +    my @l2 = grep { $_->{rootDevice} eq $hd->{device} } &read([$hd], 1);      #- /proc/partitions includes partition with type "empty" and a non-null size      #- so add them for comparison @@ -61,7 +65,7 @@ sub compare {  	    log::l("not using /proc/partitions because of the presence of solaris extended partition"); #- cf #33866  	} else {  	    die sprintf( -		    "/proc/partitions does not agree with drakx %d != %d:\n%s\n", $len1, $len2, +		    "/proc/partitions does not agree with drakx %d != %d for %s:\n%s\n", $len1, $len2, $hd->{device},  		    "/proc/partitions: " . join(", ", map { "$_->{device} ($_->{rootDevice})" } @l2));  	}      } | 
