equal
deleted
inserted
replaced
18 } |
18 } |
19 |
19 |
20 sub hostname(\%) { |
20 sub hostname(\%) { |
21 my $devs = shift; |
21 my $devs = shift; |
22 my $mnt = tempdir(CLEANUP => 1); |
22 my $mnt = tempdir(CLEANUP => 1); |
23 my $r; |
23 my $h; |
24 |
24 |
25 foreach my $fs ( |
25 foreach my $fs ( |
26 grep { $devs->{volume}{$_}{type} =~ /^ext/i } |
26 grep { |
27 grep { exists $devs->{volume}{$_}{type} } |
27 exists $devs->{volume}{$_}{type} |
28 keys %{ $devs->{volume} } |
28 and $devs->{volume}{$_}{type} =~ /^ext/i |
|
29 } @{ $devs->{volumes} } |
29 ) |
30 ) |
30 { |
31 { |
31 run("mount -r $fs $mnt"); |
32 run("mount -r $fs $mnt"); |
32 if (-f "$mnt/etc/hostname") { |
33 if (-f "$mnt/etc/hostname") { |
33 die "ERR: found 2nd hostname" if defined $r; |
34 chomp($h = cat("$mnt/etc/hostname")); |
34 chomp($r = cat("$mnt/etc/hostname")); |
|
35 } |
35 } |
36 run("umount $mnt"); |
36 run("umount $mnt"); |
|
37 return $h if defined $h; |
37 } |
38 } |
38 |
39 |
39 return $r; |
40 return $h; |
|
41 } |
|
42 |
|
43 sub fsck(\%) { |
|
44 my $devs = shift; |
|
45 |
|
46 foreach |
|
47 my $v (grep { exists $devs->{volume}{type} } keys %{ $devs->{volume} }) |
|
48 { |
|
49 my $volume = $devs->{volume}{$v}; |
|
50 next if $volume->{type} !~ /^ext/i; |
|
51 |
|
52 system("fsck -C0 $v"); |
|
53 die "ERR: fsck failed\n" if $? > 2; |
|
54 } |
40 } |
55 } |
41 |
56 |
42 1; |
57 1; |
43 |
58 |
44 # vim:sts=4 sw=4 aw ai si: |
59 # vim:sts=4 sw=4 aw ai si: |