diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2002-07-30 12:24:42 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2002-07-30 12:24:42 +0000 |
commit | a5b128d11b7ce8b5776492e1f560ab034e255ab7 (patch) | |
tree | 6c2fcee2ec50ccbeca1ee5230bcf25a7152768cf /perl-install/fs.pm | |
parent | 3507110b9e2f60e615983a93003dc0cc4e140808 (diff) | |
download | drakx-backup-do-not-use-a5b128d11b7ce8b5776492e1f560ab034e255ab7.tar drakx-backup-do-not-use-a5b128d11b7ce8b5776492e1f560ab034e255ab7.tar.gz drakx-backup-do-not-use-a5b128d11b7ce8b5776492e1f560ab034e255ab7.tar.bz2 drakx-backup-do-not-use-a5b128d11b7ce8b5776492e1f560ab034e255ab7.tar.xz drakx-backup-do-not-use-a5b128d11b7ce8b5776492e1f560ab034e255ab7.zip |
- call fsck.jfs before mounting read-write (otherwise mount simply fails)
- propose fsck -y for ext2 when fsck -a fails
Diffstat (limited to 'perl-install/fs.pm')
-rw-r--r-- | perl-install/fs.pm | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/perl-install/fs.pm b/perl-install/fs.pm index 2cb5c280d..c684bf7be 100644 --- a/perl-install/fs.pm +++ b/perl-install/fs.pm @@ -700,10 +700,21 @@ 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) { + #- needed if the system is dirty otherwise mounting read-write simply fails + run_program::run("fsck.jfs", $dev) or die "fsck.jfs failed"; } elsif ($fs eq 'ext2') { - run_program::run("fsck.ext2", "-a", $dev); - $? & 0x0100 and log::l("fsck corrected partition $dev"); - $? & 0xfeff and die _("fsck failed with exit code %d or signal %d", $? >> 8, $? & 255); + foreach ('-a', '-y') { + run_program::run("fsck.ext2", $_, $dev); + my $err = $?; + if ($err & 0x0100) { log::l("fsck corrected partition $dev") } + if ($err & 0xfeff) { + my $txt = sprintf("fsck failed on %s with exit code %d or signal %d", $dev, $err >> 8, $err & 255); + $_ eq '-y' ? die($txt) : cdie($txt); + } else { + last; + } + } } if (member($fs, @fs_modules)) { eval { modules::load($fs) }; @@ -803,10 +814,9 @@ sub umount_part { sub mount_all($;$$) { my ($fstab, $prefix) = @_; - #- TODO fsck, create check_mount_all ? log::l("mounting all filesystems"); - #- order mount by alphabetical ordre, that way / < /home < /home/httpd... + #- order mount by alphabetical order, that way / < /home < /home/httpd... foreach (sort { $a->{mntpoint} cmp $b->{mntpoint} } grep { isSwap($_) || $_->{mntpoint} && isTrueFS($_) } @$fstab) { mount_part($_, $prefix); } |