X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Fsteps%2FInstallPartitionDisks.py;h=f36e2e9154aa5a28561421922304232bebd8801b;hb=7804369e701d610fe47a23e4778042b93ffa78d7;hp=72ffa9352bc2f100a4a7e541fa1dcbb3251c34cc;hpb=d7d45eb9ef727324735774fd42e432730f8845db;p=bootmanager.git diff --git a/source/steps/InstallPartitionDisks.py b/source/steps/InstallPartitionDisks.py index 72ffa93..f36e2e9 100644 --- a/source/steps/InstallPartitionDisks.py +++ b/source/steps/InstallPartitionDisks.py @@ -50,7 +50,7 @@ import utils import BootServerRequest import compatibility - +import ModelOptions def Run( vars, log ): """ @@ -96,6 +96,8 @@ def Run( vars, log ): if BOOT_CD_VERSION == "": raise ValueError, "BOOT_CD_VERSION" + NODE_MODEL_OPTIONS= vars["NODE_MODEL_OPTIONS"] + except KeyError, var: raise BootManagerException, "Missing variable in vars: %s\n" % var except ValueError, var: @@ -183,11 +185,24 @@ def Run( vars, log ): # make swap utils.sysexec( "mkswap %s" % PARTITIONS["swap"], log ) - # make root file system - utils.sysexec( "mkfs.ext2 -j %s" % PARTITIONS["root"], log ) - - # make vservers file system - utils.sysexec( "mkfs.ext2 -m 0 -j %s" % PARTITIONS["vservers"], log ) + # check if badhd option has been set + option = '' + txt = '' + if NODE_MODEL_OPTIONS & ModelOptions.BADHD: + option = '-c' + txt = " with bad block search enabled, which may take a while" + + # filesystems partitions names and their corresponding + # reserved-blocks-percentages + filesystems = {"root":5,"vservers":0} + + # make the file systems + for fs in filesystems.keys(): + # get the reserved blocks percentage + rbp = filesystems[fs] + devname = PARTITIONS[fs] + log.write("formatting %s partition (%s)%s.\n" % (fs,devname,txt)) + utils.sysexec( "mkfs.ext2 -q %s -m %d -j %s" % (option,rbp,devname), log ) # save the list of block devices in the log log.write( "Block devices used (in lvm):\n" ) @@ -304,7 +319,10 @@ def create_lvm_physical_volume( part_path, vars, log ): try: # again, wipe any old data, this time on the partition utils.sysexec( "dd if=/dev/zero of=%s bs=512 count=1" % part_path, log ) - utils.sysexec( "pvcreate -fy %s" % part_path, log ) + ### patch Thierry Parmentelat, required on some hardware + import time + time.sleep(1) + utils.sysexec( "pvcreate -ffy %s" % part_path, log ) except BootManagerException, e: log.write( "create_lvm_physical_volume failed.\n" ) return 0