summaryrefslogtreecommitdiffstats
path: root/perl-install/partition_table/dmcrypt.pm
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2008-09-19 10:44:16 +0000
committerPascal Rigaux <pixel@mandriva.com>2008-09-19 10:44:16 +0000
commit24bc2fb8381b20a9d52149df6e609c5dfe5ca0c0 (patch)
treee2e973c39b3b98c2cfd833225eed238c833c865c /perl-install/partition_table/dmcrypt.pm
parent3e5512b600d2af897c9bc393d240f4549902c3c5 (diff)
downloaddrakx-24bc2fb8381b20a9d52149df6e609c5dfe5ca0c0.tar
drakx-24bc2fb8381b20a9d52149df6e609c5dfe5ca0c0.tar.gz
drakx-24bc2fb8381b20a9d52149df6e609c5dfe5ca0c0.tar.bz2
drakx-24bc2fb8381b20a9d52149df6e609c5dfe5ca0c0.tar.xz
drakx-24bc2fb8381b20a9d52149df6e609c5dfe5ca0c0.zip
- diskdrake
o handle partitions encrypted with cryptsetup - bug fix: add mandatory new modules for dm-crypt
Diffstat (limited to 'perl-install/partition_table/dmcrypt.pm')
-rw-r--r--perl-install/partition_table/dmcrypt.pm41
1 files changed, 41 insertions, 0 deletions
diff --git a/perl-install/partition_table/dmcrypt.pm b/perl-install/partition_table/dmcrypt.pm
new file mode 100644
index 000000000..3eae783c6
--- /dev/null
+++ b/perl-install/partition_table/dmcrypt.pm
@@ -0,0 +1,41 @@
+package partition_table::dmcrypt; # $Id: $
+
+# dmcrypt on full disk
+
+use diagnostics;
+use strict;
+
+our @ISA = qw(partition_table::readonly);
+
+use common;
+use partition_table::readonly;
+use fs::type;
+
+sub _parts {
+ my ($hd) = @_;
+
+ my $part = { size => $hd->{totalsectors}, device => $hd->{device} };
+ add2hash($part, fs::type::type_name2subpart('Encrypted'));
+
+ require fs;
+ fs::get_major_minor([$part]); # to allow is_same_hd() in fs::dmcrypt
+
+ [ $part ];
+}
+
+sub read_primary {
+ my ($hd) = @_;
+
+ my $type = fs::type::type_subpart_from_magic($hd);
+
+ $type && $type->{type_name} eq 'Encrypted' or return;
+
+ partition_table::dmcrypt->initialize($hd);
+ 1;
+}
+
+sub initialize {
+ my ($class, $hd) = @_;
+
+ partition_table::readonly::initialize($class, $hd, _parts($hd));
+}