diff options
Diffstat (limited to 'perl-install/fs.pm')
-rw-r--r-- | perl-install/fs.pm | 78 |
1 files changed, 40 insertions, 38 deletions
diff --git a/perl-install/fs.pm b/perl-install/fs.pm index a8d07edb2..9f3938577 100644 --- a/perl-install/fs.pm +++ b/perl-install/fs.pm @@ -268,18 +268,18 @@ sub prepare_write_fstab { } sub fstab_to_string { - my ($all_hds, $prefix) = @_; + my ($all_hds, $o_prefix) = @_; my $fstab = [ fsedit::get_really_all_fstab($all_hds), @{$all_hds->{special}} ]; - my ($s, undef) = prepare_write_fstab($fstab, $prefix, 'keep_smb_credentials'); + my ($s, undef) = prepare_write_fstab($fstab, $o_prefix, 'keep_smb_credentials'); $s; } sub write_fstab { - my ($all_hds, $prefix) = @_; - log::l("writing $prefix/etc/fstab"); + my ($all_hds, $o_prefix) = @_; + log::l("writing $o_prefix/etc/fstab"); my $fstab = [ fsedit::get_really_all_fstab($all_hds), @{$all_hds->{special}} ]; - my ($s, $smb_credentials) = prepare_write_fstab($fstab, $prefix, ''); - output("$prefix/etc/fstab", $s); + my ($s, $smb_credentials) = prepare_write_fstab($fstab, $o_prefix, ''); + output("$o_prefix/etc/fstab", $s); network::smb::save_credentials($_) foreach @$smb_credentials; } @@ -416,12 +416,13 @@ sub mount_options_help { } sub set_default_options { - my ($part, $is_removable, $useSupermount, $security, $iocharset, $codepage) = @_; + my ($part, %opts) = @_; + #- opts are: is_removable useSupermount security iocharset codepage my ($options, $unknown) = mount_options_unpack($part); - if ($is_removable) { - $options->{supermount} = $useSupermount; + if ($opts{is_removable}) { + $options->{supermount} = $opts{useSupermount}; $part->{type} = 'auto'; } @@ -455,17 +456,17 @@ sub set_default_options { put_in_hash($options, { user => 1, noexec => 0, - }) if $is_removable; + }) if $opts{is_removable}; put_in_hash($options, { - 'umask=0' => $security < 3, 'iocharset=' => $iocharset, 'codepage=' => $codepage, + 'umask=0' => $opts{security} < 3, 'iocharset=' => $opts{iocharset}, 'codepage=' => $opts{codepage}, }); } if (isThisFs('ntfs', $part)) { - put_in_hash($options, { ro => 1, 'umask=0' => $security < 3, 'iocharset=' => $iocharset }); + put_in_hash($options, { ro => 1, 'umask=0' => $opts{security} < 3, 'iocharset=' => $opts{iocharset} }); } if (isThisFs('iso9660', $part) || $is_auto) { - put_in_hash($options, { user => 1, noexec => 0, 'iocharset=' => $iocharset }); + put_in_hash($options, { user => 1, noexec => 0, 'iocharset=' => $opts{iocharset} }); } if (isThisFs('reiserfs', $part)) { $options->{notail} = 1; @@ -493,12 +494,13 @@ sub set_default_options { } sub set_all_default_options { - my ($all_hds, $useSupermount, $security, $iocharset, $codepage) = @_; + my ($all_hds, %opts) = @_; + #- opts are: useSupermount security iocharset codepage my @removables = @{$all_hds->{raw_hds}}; foreach my $part (fsedit::get_really_all_fstab($all_hds)) { - set_default_options($part, member($part, @removables), $useSupermount, $security, $iocharset, $codepage); + set_default_options($part, %opts, is_removable => member($part, @removables)); } } @@ -657,8 +659,8 @@ sub formatMount_part { } sub formatMount_all { - my ($raids, $fstab, $prefix, $wait_message) = @_; - formatMount_part($_, $raids, $fstab, $prefix, $wait_message) + my ($raids, $fstab, $prefix, $o_wait_message) = @_; + formatMount_part($_, $raids, $fstab, $prefix, $o_wait_message) foreach sort { isLoopback($a) ? 1 : isSwap($a) ? -1 : 0 } grep { $_->{mntpoint} } @$fstab; #- ensure the link is there @@ -674,8 +676,8 @@ sub formatMount_all { } sub mount { - my ($dev, $where, $fs, $rdonly, $options, $wait_message) = @_; - log::l("mounting $dev on $where as type $fs, options $options"); + my ($dev, $where, $fs, $b_rdonly, $o_options, $o_wait_message) = @_; + log::l("mounting $dev on $where as type $fs, options $o_options"); -d $where or mkdir_p($where); @@ -684,14 +686,14 @@ sub mount { my @fs_modules = qw(vfat hfs romfs ufs reiserfs xfs jfs ext3); if (member($fs, 'smb', 'smbfs', 'nfs', 'davfs', 'ntfs') && $::isStandalone) { - $wait_message->(N("Mounting partition %s", $dev)) if $wait_message; - system('mount', '-t', $fs, $dev, $where, if_($options, '-o', $options)) == 0 or die \N("mounting partition %s in directory %s failed", $dev, $where); + $o_wait_message->(N("Mounting partition %s", $dev)) if $o_wait_message; + system('mount', '-t', $fs, $dev, $where, if_($o_options, '-o', $o_options)) == 0 or die \N("mounting partition %s in directory %s failed", $dev, $where); return; #- do not update mtab, already done by mount(8) } elsif (member($fs, 'ext2', 'proc', 'usbdevfs', 'iso9660', @fs_modules)) { $where =~ s|/$||; my $flag = c::MS_MGC_VAL(); - $flag |= c::MS_RDONLY() if $rdonly; + $flag |= c::MS_RDONLY() if $b_rdonly; my $mount_opt = ""; if ($fs eq 'vfat') { @@ -701,16 +703,16 @@ sub mount { #- without knowing it, / is forced to be mounted with notail # if $where =~ m|/(boot)?$|; $mount_opt = 'notail'; #- notail in any case - } elsif ($fs eq 'jfs' && !$rdonly) { - $wait_message->(N("Checking %s", $dev)) if $wait_message; + } elsif ($fs eq 'jfs' && !$b_rdonly) { + $o_wait_message->(N("Checking %s", $dev)) if $o_wait_message; #- needed if the system is dirty otherwise mounting read-write simply fails run_program::raw({ timeout => 60 * 60 }, "fsck.jfs", $dev) or do { my $err = $?; die "fsck.jfs failed" if $err & 0xfc00; }; } elsif ($fs eq 'ext2' || $fs eq 'ext3' && $::isInstall) { - if (!$rdonly) { - $wait_message->(N("Checking %s", $dev)) if $wait_message; + if (!$b_rdonly) { + $o_wait_message->(N("Checking %s", $dev)) if $o_wait_message; foreach ('-a', '-y') { run_program::raw({ timeout => 60 * 60 }, "fsck.ext2", $_, $dev); my $err = $?; @@ -734,7 +736,7 @@ sub mount { eval { modules::load('isofs') }; } log::l("calling mount($dev, $where, $fs, $flag, $mount_opt)"); - $wait_message->(N("Mounting partition %s", $dev)) if $wait_message; + $o_wait_message->(N("Mounting partition %s", $dev)) if $o_wait_message; syscall_('mount', $dev, $where, $fs, $flag, $mount_opt) or die \(N("mounting partition %s in directory %s failed", $dev, $where) . " ($!)"); } else { log::l("skipping mounting $fs partition"); @@ -756,14 +758,14 @@ sub umount { } sub mount_part { - my ($part, $prefix, $rdonly, $wait_message) = @_; + my ($part, $o_prefix, $b_rdonly, $o_wait_message) = @_; #- root carrier's link can't be mounted - loopback::carryRootCreateSymlink($part, $prefix); + loopback::carryRootCreateSymlink($part, $o_prefix); log::l("isMounted=$part->{isMounted}, real_mntpoint=$part->{real_mntpoint}, mntpoint=$part->{mntpoint}"); if ($part->{isMounted} && $part->{real_mntpoint} && $part->{mntpoint}) { - log::l("remounting partition on $prefix$part->{mntpoint} instead of $part->{real_mntpoint}"); + log::l("remounting partition on $o_prefix$part->{mntpoint} instead of $part->{real_mntpoint}"); if ($::isInstall) { #- ensure partition will not be busy. require install_any; install_any::getFile('XXX'); @@ -771,7 +773,7 @@ sub mount_part { eval { umount($part->{real_mntpoint}); rmdir $part->{real_mntpoint}; - symlinkf "$prefix$part->{mntpoint}", $part->{real_mntpoint}; + symlinkf "$o_prefix$part->{mntpoint}", $part->{real_mntpoint}; delete $part->{real_mntpoint}; $part->{isMounted} = 0; }; @@ -781,19 +783,19 @@ sub mount_part { unless ($::testing) { if (isSwap($part)) { - $wait_message->(N("Enabling swap partition %s", $part->{device})) if $wait_message; + $o_wait_message->(N("Enabling swap partition %s", $part->{device})) if $o_wait_message; swap::swapon($part->{device}); } else { $part->{mntpoint} or die "missing mount point for partition $part->{device}"; - my $mntpoint = ($prefix || '') . $part->{mntpoint}; + my $mntpoint = ($o_prefix || '') . $part->{mntpoint}; if (isLoopback($part) || $part->{encrypt_key}) { set_loop($part); } elsif (loopback::carryRootLoopback($part)) { $mntpoint = "/initrd/loopfs"; } my $dev = $part->{real_device} || $part->{device}; - mount($dev, $mntpoint, type2fs($part), $rdonly, $part->{options}, $wait_message); + mount($dev, $mntpoint, type2fs($part), $b_rdonly, $part->{options}, $o_wait_message); rmdir "$mntpoint/lost+found"; } } @@ -801,7 +803,7 @@ sub mount_part { } sub umount_part { - my ($part, $prefix) = @_; + my ($part, $o_prefix) = @_; $part->{isMounted} || $part->{real_mntpoint} or return; @@ -811,7 +813,7 @@ sub umount_part { } elsif (loopback::carryRootLoopback($part)) { umount("/initrd/loopfs"); } else { - umount(($prefix || '') . $part->{mntpoint} || devices::make($part->{device})); + umount(($o_prefix || '') . $part->{mntpoint} || devices::make($part->{device})); devices::del_loop(delete $part->{real_device}) if $part->{real_device}; } } @@ -832,13 +834,13 @@ sub umount_all($;$) { # various functions ################################################################################ sub df { - my ($part, $prefix) = @_; + my ($part, $o_prefix) = @_; my $dir = "/tmp/tmp_fs_df"; return $part->{free} if exists $part->{free}; if ($part->{isMounted}) { - $dir = ($prefix || '') . $part->{mntpoint}; + $dir = ($o_prefix || '') . $part->{mntpoint}; } elsif ($part->{notFormatted} && !$part->{isFormatted}) { return; #- won't even try! } else { |