- try:
- # first run fsck to prevent fs corruption from hanging mount...
- log.write( "fsck root file system\n" )
- utils.sysexec("e2fsck -v -p %s" % (PARTITIONS["root"]),log)
-
- log.write( "fsck vserver file system\n" )
- utils.sysexec("e2fsck -v -p %s" % (PARTITIONS["vservers"]),log)
- except BootManagerException, e:
- log.write( "BootManagerException during fsck of /root and /vservers : %s\n" %
- str(e) )
- return 0
+ for filesystem in ("root","vservers"):
+ try:
+ # first run fsck to prevent fs corruption from hanging mount...
+ log.write( "fsck %s file system\n" % filesystem )
+ utils.sysexec("e2fsck -v -p %s" % (PARTITIONS[filesystem]),log)
+ except BootManagerException, e:
+ log.write( "BootManagerException during fsck of %s (%s) filesystem : %s\n" %
+ (filesystem, PARTITIONS[filesystem], str(e)) )
+ try:
+ log.write( "Trying to recover filesystem errors on %s\n" % filesystem )
+ utils.sysexec("e2fsck -v -y %s" % (PARTITIONS[filesystem]),log)
+ except BootManagerException, e:
+ log.write( "BootManagerException during trying to recover filesystem errors on %s (%s) filesystem : %s\n" %
+ (filesystem, PARTITIONS[filesystem], str(e)) )
+ return -1
+ else:
+ # disable time/count based filesystems checks
+ utils.sysexec_noerr( "tune2fs -c -1 -i 0 %s" % PARTITIONS[filesystem], log)