summaryrefslogtreecommitdiffstats
path: root/partedUtils.py
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2007-03-28 14:10:06 +0000
committerChris Lumens <clumens@redhat.com>2007-03-28 14:10:06 +0000
commit1e0e302733969dc5a90c8062e5baaea2ab254da0 (patch)
tree1ef802b0d1e464667b3bc47b5229b0f2f95b4545 /partedUtils.py
parentdcc387517d921faac5d42ea897dc50dc11aa94b8 (diff)
downloadanaconda-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.py68
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