SI/blkid.pm
changeset 7 03ca6d811a17
parent 6 df6ca24871d4
child 10 23dd30396607
equal deleted inserted replaced
6:df6ca24871d4 7:03ca6d811a17
     2 
     2 
     3 use strict;
     3 use strict;
     4 use warnings;
     4 use warnings;
     5 use File::Find;
     5 use File::Find;
     6 
     6 
     7 sub ff($$);
       
     8 
     7 
     9 sub save($\%) {
     8 use if $ENV{DEBUG} ~~ /blkid|all/ => "Smart::Comments";
    10     my ($file, $part) = @_;
       
    11 
     9 
    12     foreach (`blkid -c /dev/null`) {
    10 use SI::tools;
    13         my ($dev) = (split /:/)[0];
       
    14 
    11 
    15         my ($uuid)  = /\sUUID=.(.*?).\s/;
    12 sub find_by_devid($$) {
    16         my ($type)  = /\sTYPE=.(.*?).\s/;
       
    17         my ($label) = /\sLABEL=.(.*?).\s/;
       
    18 
       
    19         if ($dev ~~ $part->{physical}) {
       
    20             $part->{physical}{$dev}{uuid}  = $uuid;
       
    21             $part->{physical}{$dev}{type}  = $type;
       
    22             $part->{physical}{$dev}{label} = $label;
       
    23             next;
       
    24         }
       
    25 
       
    26         # dev mapper names should be replace by nicer ones
       
    27         if ($dev ~~ /^\/dev\/dm-/) {
       
    28             $dev = ff("/dev/mapper", (stat $dev)[6])
       
    29               or next;
       
    30             $part->{logical}{$dev}{uuid}  = $uuid;
       
    31             $part->{logical}{$dev}{type}  = $type;
       
    32             $part->{logical}{$dev}{label} = $label;
       
    33         }
       
    34 
       
    35     }
       
    36 }
       
    37 
       
    38 sub ff($$) {
       
    39     my ($dir, $id) = @_;
    13     my ($dir, $id) = @_;
    40     my $found;
    14     my $found;
    41     find(
    15     find(
    42         sub {
    16         sub {
    43             return if $found;
    17             return if $found;
    47         $dir
    21         $dir
    48     );
    22     );
    49     return $found;
    23     return $found;
    50 }
    24 }
    51 
    25 
       
    26 
       
    27 sub ids($\%) {
       
    28     my ($file, $devs) = @_;
       
    29 
       
    30     verbose("reading blkids:");
       
    31     foreach (`blkid -c /dev/null`) {
       
    32         my $dev = (split /:/)[0];
       
    33 	### $dev
       
    34 	verbose($dev);
       
    35 
       
    36         my ($uuid)  = /\sUUID=.(.*?).\s/;
       
    37         my ($type)  = /\sTYPE=.(.*?).\s/;
       
    38         my ($label) = /\sLABEL=.(.*?).\s/;
       
    39 
       
    40         #if ($dev ~~ $devs->{physical}) {
       
    41             #$devs->{physical}{$dev}{uuid}  = $uuid;
       
    42             #$devs->{physical}{$dev}{type}  = $type;
       
    43             #$devs->{physical}{$dev}{label} = $label;
       
    44             #next;
       
    45         #}
       
    46 
       
    47         # dev mapper names should be replaced by nicer ones
       
    48         if ($dev ~~ /^\/dev\/dm-/) {
       
    49             $dev = find_by_devid("/dev/mapper", (stat $dev)[6]);
       
    50 	};
       
    51 
       
    52 	if (exists $devs->{volume}{$dev}) {
       
    53             $devs->{volume}{$dev}{uuid}  = $uuid;
       
    54             $devs->{volume}{$dev}{type}  = $type;
       
    55             $devs->{volume}{$dev}{label} = $label;
       
    56 	}
       
    57 
       
    58     }
       
    59     verbose("\n");
       
    60 }
       
    61 
    52 1;
    62 1;
    53 # vim:sts=4 sw=4 aw ai si:
    63 # vim:sts=4 sw=4 aw ai si: