SI/blkid.pm
changeset 1 b9ddf49db5b8
child 3 1b975c58c5bf
equal deleted inserted replaced
0:c0faaa882cf6 1:b9ddf49db5b8
       
     1 package SI::blkid;
       
     2 
       
     3 use strict;
       
     4 use warnings;
       
     5 use File::Find;
       
     6 
       
     7 sub ff($$) {
       
     8 	my ($dir, $id) = @_;
       
     9 	my $found;
       
    10 	find(sub { 
       
    11 		return if $found;
       
    12 		$found = (stat)[6] == $id ? $File::Find::name : undef;
       
    13 		return;
       
    14 		}, $dir);
       
    15 	return $found;
       
    16 }
       
    17 
       
    18 sub info($\%) {
       
    19 	my ($file, $part) = @_;
       
    20 
       
    21 	foreach (`blkid -c /dev/null`) {
       
    22 		my ($dev) = (split /:/)[0];
       
    23 
       
    24 		my ($uuid) = /\sUUID=.(.*?).\s/;
       
    25 		my ($type) = /\sTYPE=.(.*?).\s/;
       
    26 		my ($label) = /\sLABEL=.(.*?).\s/;
       
    27 
       
    28 		if ($dev ~~ $part->{physical}) {
       
    29 			$part->{physical}{$dev}{uuid} = $uuid;
       
    30 			$part->{physical}{$dev}{type} = $type;
       
    31 			$part->{physical}{$dev}{label} = $label;
       
    32 			next;
       
    33 		}
       
    34 	
       
    35 		# dev mapper names should be replace by nicer ones
       
    36 		if ($dev ~~ /^\/dev\/dm-/) {
       
    37 			$dev = ff("/dev/mapper", (stat $dev)[6])
       
    38 				or next;
       
    39 			$part->{logical}{$dev}{uuid} = $uuid;
       
    40 			$part->{logical}{$dev}{type} = $type;
       
    41 			$part->{logical}{$dev}{label} = $label;
       
    42 		}
       
    43 		
       
    44 	}
       
    45 }
       
    46 
       
    47 1;