[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH] tweak save-exception-to-disk algorithm



As it is now, the save-exception-to-disk code does:

if given device is a floppy:
  format
mount as vfat, else punt
copy exception

The attached patch changes the logic to:

get given device filesystem type
try to mount as that
  if it fails and fstype is (vfat|none)
    format as vfat
    try to mount as vfat
  else
    punt
copy exception

Comments?

Bill
diff --git a/exception.py b/exception.py
index d5f4bbc..22170d0 100644
--- a/exception.py
+++ b/exception.py
@@ -25,6 +25,7 @@ import traceback
 import iutil
 import types
 import bdb
+import partedUtils
 import rhpl
 from string import joinfields
 from cPickle import Pickler
@@ -254,10 +255,9 @@ def copyExceptionToRemote(intf, scpInfo):
         return False
 
 # Save the traceback to a removable storage device, such as a floppy disk
-# or a usb/firewire drive.  In the event of a floppy disk, it is assumed to
-# be unformatted and safe for us to destroy.  For all other devices, it is
-# assumed that they are already formatted and we will only attempt to write
-# the traceback file to the device.  Returns success or not.
+# or a usb/firewire drive.  If there's no filesystem on the disk/partition,
+# write a vfat one.
+# Returns success or not.
 def copyExceptionToDisk(anaconda, device):
     # in test mode have save to disk option just copy to new name
     if not flags.setupFilesystems:
@@ -277,8 +277,14 @@ def copyExceptionToDisk(anaconda, device):
 
     os.close(fd)
 
-    # Only format floppy devices, not usb storage devices.
-    if device in isys.floppyDriveDict().keys() and rhpl.getArch() != "ia64":
+    fstype = partedUtils.sniffFilesystemType(device)
+    if fstype == None:
+        fstype = 'vfat'
+    try:
+        isys.mount(device, "/tmp/crash", fstype)
+    except SystemError:
+        if fstype != 'vfat':
+            return False
         cmd = "/usr/sbin/mkdosfs"
 
         if os.access("/sbin/mkdosfs", os.X_OK):
@@ -287,10 +293,10 @@ def copyExceptionToDisk(anaconda, device):
         iutil.execWithRedirect (cmd, [device], stdout = '/dev/tty5',
                                 stderr = '/dev/tty5')
 
-    try:
-        isys.mount(device, "/tmp/crash", fstype = "vfat")
-    except SystemError:
-        return False
+        try:
+            isys.mount(device, "/tmp/crash", fstype)
+        except SystemError:
+            return False
 
     # copy trace dump we wrote to local storage to disk
     try:

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]