summaryrefslogtreecommitdiffstats
path: root/draklive
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2009-06-29 13:20:15 +0000
committerOlivier Blin <oblin@mandriva.com>2009-06-29 13:20:15 +0000
commit471d59aefa5dfdf9ee3d76f9ae456d66f0cef2e4 (patch)
tree3cfa1854274bccd62f8b0c1cbaae89d63cd33e79 /draklive
parent60d8d749fc2413ddf868a05faeb5fd03a80c6f95 (diff)
downloaddrakiso-471d59aefa5dfdf9ee3d76f9ae456d66f0cef2e4.tar
drakiso-471d59aefa5dfdf9ee3d76f9ae456d66f0cef2e4.tar.gz
drakiso-471d59aefa5dfdf9ee3d76f9ae456d66f0cef2e4.tar.bz2
drakiso-471d59aefa5dfdf9ee3d76f9ae456d66f0cef2e4.tar.xz
drakiso-471d59aefa5dfdf9ee3d76f9ae456d66f0cef2e4.zip
make allocate_master return a loopback device for each partition
Diffstat (limited to 'draklive')
-rwxr-xr-xdraklive16
1 files changed, 9 insertions, 7 deletions
diff --git a/draklive b/draklive
index 0d43ed6..b0c1233 100755
--- a/draklive
+++ b/draklive
@@ -706,7 +706,7 @@ EOF
close($fdisk) or die "unable to run fdisk\n" . ("$!" ? "Error closing fdisk pipe: $!" : "Exit status $? from fdisk");
my $inode_size = $media->get_media_setting('inode_size');
- return allocate_partition($dest, 0, $sector_size, $fs, $inode_size);
+ map_index { allocate_partition($dest, $::i, $sector_size, $_->{fs_type}, $inode_size) } @{$media->{partitions}};
}
sub create_disk_master {
@@ -720,11 +720,12 @@ sub create_disk_master {
70000000) :
directory_usage($live->get_system_root) + 200000000;
- my $loop = allocate_master($live->{media}, $dest, $disk_size, $live->{media}->get_media_setting('fs'));
- local $opts->{device} = $loop;
+ my @loops = allocate_master($live->{media}, $dest, $disk_size, $live->{media}->get_media_setting('fs'));
+ my $slash_idx = $live->{media}->find_partition_index('/');
+ local $opts->{device} = $loops[$slash_idx];
local $opts->{disk_device} = $dest;
record_master($live, $opts);
- run_('losetup', '-d', $loop);
+ run_('losetup', '-d', $_) foreach @loops;
}
#- $opts:
@@ -1061,10 +1062,11 @@ sub create_usb_replicator {
my $dest = get_disk_replicator_path($live);
my %files = get_disk_replicator_files($live);
my $size = fold_left { $::a + $::b } map { directory_usage($_, 'apparent') } keys(%files);
- my $loop = allocate_master($live->{replicator}{media}, $dest, 5000000 + $size, 'vfat');
- my $opts = { device => $loop, disk_device => $dest, append => $live->{replicator}{append} };
+ my @loops = allocate_master($live->{replicator}{media}, $dest, 5000000 + $size, 'vfat');
+ my $slash_idx = $live->{replicator}{media}->find_partition_index('/');
+ my $opts = { device => $loops[$slash_idx], disk_device => $dest, append => $live->{replicator}{append} };
record_usb_replicator($live, $opts);
- run_('losetup', '-d', $loop);
+ run_('losetup', '-d', $_) foreach @loops;
}
sub record_usb_replicator {