diff options
author | Chris Lumens <clumens@redhat.com> | 2007-03-28 14:10:06 +0000 |
---|---|---|
committer | Chris Lumens <clumens@redhat.com> | 2007-03-28 14:10:06 +0000 |
commit | 1e0e302733969dc5a90c8062e5baaea2ab254da0 (patch) | |
tree | 1ef802b0d1e464667b3bc47b5229b0f2f95b4545 /partedUtils.py | |
parent | dcc387517d921faac5d42ea897dc50dc11aa94b8 (diff) | |
download | anaconda-1e0e302733969dc5a90c8062e5baaea2ab254da0.tar.gz anaconda-1e0e302733969dc5a90c8062e5baaea2ab254da0.tar.xz anaconda-1e0e302733969dc5a90c8062e5baaea2ab254da0.zip |
Move the clearpart logic out of openDevices since we don't want to do it every
time openDevices is called, which is fairly often (#232936).
Diffstat (limited to 'partedUtils.py')
-rw-r--r-- | partedUtils.py | 68 |
1 files changed, 47 insertions, 21 deletions
diff --git a/partedUtils.py b/partedUtils.py index 0dffc60b0..3f98fdf4d 100644 --- a/partedUtils.py +++ b/partedUtils.py @@ -990,6 +990,48 @@ class DiskSet: return 1 + def clearDevices (self): + def inClearDevs (drive, clearDevs): + return (clearDevs is None) or (len(clearDevs) == 0) or (drive in clearDevs) + + clearDevs = [] + initAll = False + + if self.anaconda is not None and self.anaconda.isKickstart: + clearDevs = self.anaconda.id.ksdata.clearpart.drives + initAll = self.anaconda.id.ksdata.clearpart.initAll + + for drive in self.driveList(): + # ignoredisk takes precedence over clearpart (#186438). + if drive in DiskSet.skippedDisks: + continue + + deviceFile = isys.makeDevInode(drive, "/dev/" + drive) + + if not isys.mediaPresent(drive): + DiskSet.skippedDisks.append(drive) + continue + + try: + dev = parted.PedDevice.get (deviceFile) + except parted.error, msg: + DiskSet.skippedDisks.append(drive) + continue + + if initAll and inClearDevs(drive, clearDevs) and not flags.test \ + and not hasProtectedPartitions(drive, self.anaconda): + if rhpl.getArch() == "s390" and drive[:4] == "dasd": + if self.dasdFmt(drive): + DiskSet.skippedDrives.append(drive) + continue + else: + try: + disk = dev.disk_new_fresh(getDefaultDiskType()) + disk.commit() + except parted.error, msg: + DiskSet.skippedDisks.append(drive) + continue + def openDevices (self): """Open the disks on the system and skip unopenable devices.""" @@ -1017,11 +1059,11 @@ class DiskSet: ks = False clearDevs = [] initAll = False - if self.anaconda is not None: - if self.anaconda.isKickstart: - ks = True - clearDevs = self.anaconda.id.ksdata.clearpart.drives - initAll = self.anaconda.id.ksdata.clearpart.initAll + + if self.anaconda is not None and self.anaconda.isKickstart: + ks = True + clearDevs = self.anaconda.id.ksdata.clearpart.drives + initAll = self.anaconda.id.ksdata.clearpart.initAll # FIXME: need the right fix for z/VM formatted dasd if rhpl.getArch() == "s390" and drive[:4] == "dasd" and isys.getDasdState(drive): @@ -1060,22 +1102,6 @@ class DiskSet: DiskSet.skippedDisks.append(drive) continue - if initAll and ((clearDevs is None) or (len(clearDevs) == 0) \ - or (drive in clearDevs)) and not flags.test \ - and not hasProtectedPartitions(drive, self.anaconda): - if rhpl.getArch() == "s390" and drive[:4] == "dasd": - if self.dasdFmt(drive): - DiskSet.skippedDisks.append(drive) - continue - else: - try: - disk = dev.disk_new_fresh(getDefaultDiskType()) - disk.commit() - self.disks[drive] = disk - except parted.error, msg: - DiskSet.skippedDisks.append(drive) - continue - try: disk = parted.PedDisk.new(dev) self.disks[drive] = disk |