FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Kernel Team

 
 
LinkBack Thread Tools
 
Old 06-28-2011, 03:31 PM
David Lehman
 
Default Do not traceback on mpath errors caused by faulty hardware.

On Fri, 2011-06-17 at 16:56 +0200, Ales Kozumplik wrote:
> Resolves: rhbz#689520
> ---
> installinterfacebase.py | 11 +++++++++++
> storage/__init__.py | 13 +++++++++++--
> storage/devices.py | 2 +-
> storage/errors.py | 4 +++-
> 4 files changed, 26 insertions(+), 4 deletions(-)

I'm not sure how I feel about this. It could be useful, particularly if
there are/were other cases to fold in. I have reservations about how
useful it will end up being, but it's such a small amount of code that
it's hard to argue too hard against it if the code is clear/clean
enough. It would be nice if the exception list and the check for
hardware-specific failure were made less specific. Also, it might be
nice to add it to Storage.reset instead of adding a new method. Of
course, this may cause it to end up a large enough amount of code to
become more objectionable. Hell, I don't know.

Dave

>
> diff --git a/installinterfacebase.py b/installinterfacebase.py
> index 71cb9cb..6d4dd11 100644
> --- a/installinterfacebase.py
> +++ b/installinterfacebase.py
> @@ -97,3 +97,14 @@ class InstallInterfaceBase(object):
> custom_icon=icon,
> custom_buttons=buttons,
> expanded=True)
> +
> + def hardwareError(self, exception):
> + text=_("The installation was stopped due to what seems to be a problem "
> + "with your hardware, the exact error message is:

%s.

"
> + "The installer will now terminate.") % str(exception)
> + self.messageWindow(title=_("Hardware Error Encountered"),
> + text=text,
> + type="custom",
> + custom_icon="error",
> + custom_buttons=[_("_Exit installer")])
> + sys.exit(0)
> diff --git a/storage/__init__.py b/storage/__init__.py
> index 007f029..3c847f9 100644
> --- a/storage/__init__.py
> +++ b/storage/__init__.py
> @@ -87,7 +87,7 @@ def storageInitialize(anaconda):
> # Set up the protected partitions list now.
> if anaconda.protected:
> storage.protectedDevSpecs.extend(anaconda.protecte d)
> - storage.reset()
> + storage.reset_checked(anaconda.intf)
>
> if not flags.livecdInstall and not storage.protectedDevices:
> if anaconda.id.getUpgrade():
> @@ -100,7 +100,7 @@ def storageInitialize(anaconda):
> type="custom", custom_buttons = [_("_Exit installer")])
> sys.exit(1)
> else:
> - storage.reset()
> + storage.reset_checked(anaconda.intf)
>
> if not storage.disks:
> rc = anaconda.intf.messageWindow(_("No disks found"),
> @@ -435,6 +435,15 @@ class Storage(object):
> self.dumpState("initial")
> w.pop()
>
> + def reset_checked(self, intf):
> + try:
> + self.reset()
> + except MPathError as e:
> + if e.hardware_fault:
> + intf.hardwareError(e)
> + else:
> + raise
> +
> @property
> def devices(self):
> """ A list of all the devices in the device tree. """
> diff --git a/storage/devices.py b/storage/devices.py
> index a89de06..88741c1 100644
> --- a/storage/devices.py
> +++ b/storage/devices.py
> @@ -3382,7 +3382,7 @@ class MultipathDevice(DMDevice):
> stderr = "/dev/tty5")
> if rc:
> raise MPathError("multipath activation failed for '%s'" %
> - self.name)
> + self.name, hardware_fault=True)
> udev_settle()
> self.setupPartitions()
> udev_settle()
> diff --git a/storage/errors.py b/storage/errors.py
> index 1d1fea0..81e8a68 100644
> --- a/storage/errors.py
> +++ b/storage/errors.py
> @@ -126,7 +126,9 @@ class CryptoError(StorageError):
> pass
>
> class MPathError(StorageError):
> - pass
> + def __init__(self, msg, hardware_fault=False):
> + super(MPathError, self).__init__(msg)
> + self.hardware_fault = hardware_fault
>
> # DeviceTree
> class DeviceTreeError(StorageError):


_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 07:14 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org