diff -r df6ca24871d4 -r 03ca6d811a17 SI/blkid.pm --- a/SI/blkid.pm Fri Jan 15 23:17:23 2010 +0100 +++ b/SI/blkid.pm Sat Jan 16 23:53:50 2010 +0100 @@ -4,38 +4,12 @@ use warnings; use File::Find; -sub ff($$); -sub save($\%) { - my ($file, $part) = @_; - - foreach (`blkid -c /dev/null`) { - my ($dev) = (split /:/)[0]; - - my ($uuid) = /\sUUID=.(.*?).\s/; - my ($type) = /\sTYPE=.(.*?).\s/; - my ($label) = /\sLABEL=.(.*?).\s/; +use if $ENV{DEBUG} ~~ /blkid|all/ => "Smart::Comments"; - if ($dev ~~ $part->{physical}) { - $part->{physical}{$dev}{uuid} = $uuid; - $part->{physical}{$dev}{type} = $type; - $part->{physical}{$dev}{label} = $label; - next; - } +use SI::tools; - # dev mapper names should be replace by nicer ones - if ($dev ~~ /^\/dev\/dm-/) { - $dev = ff("/dev/mapper", (stat $dev)[6]) - or next; - $part->{logical}{$dev}{uuid} = $uuid; - $part->{logical}{$dev}{type} = $type; - $part->{logical}{$dev}{label} = $label; - } - - } -} - -sub ff($$) { +sub find_by_devid($$) { my ($dir, $id) = @_; my $found; find( @@ -49,5 +23,41 @@ return $found; } + +sub ids($\%) { + my ($file, $devs) = @_; + + verbose("reading blkids:"); + foreach (`blkid -c /dev/null`) { + my $dev = (split /:/)[0]; + ### $dev + verbose($dev); + + my ($uuid) = /\sUUID=.(.*?).\s/; + my ($type) = /\sTYPE=.(.*?).\s/; + my ($label) = /\sLABEL=.(.*?).\s/; + + #if ($dev ~~ $devs->{physical}) { + #$devs->{physical}{$dev}{uuid} = $uuid; + #$devs->{physical}{$dev}{type} = $type; + #$devs->{physical}{$dev}{label} = $label; + #next; + #} + + # dev mapper names should be replaced by nicer ones + if ($dev ~~ /^\/dev\/dm-/) { + $dev = find_by_devid("/dev/mapper", (stat $dev)[6]); + }; + + if (exists $devs->{volume}{$dev}) { + $devs->{volume}{$dev}{uuid} = $uuid; + $devs->{volume}{$dev}{type} = $type; + $devs->{volume}{$dev}{label} = $label; + } + + } + verbose("\n"); +} + 1; # vim:sts=4 sw=4 aw ai si: