[blivet/rhel7/master] Add a property for read-only devices.

Brian C. Lane bcl at redhat.com
Wed Sep 10 00:51:07 UTC 2014


On Tue, Sep 09, 2014 at 02:48:37PM -0400, David Shea wrote:
> Add read-only devices to the devicetree, and return read-only devices as
> protected.
> 
> Resolves: rhbz#1072619
> ---
>  blivet/devices.py    | 20 +++++++++++++++++++-
>  blivet/devicetree.py | 12 ++++--------
>  2 files changed, 23 insertions(+), 9 deletions(-)
> 
> diff --git a/blivet/devices.py b/blivet/devices.py
> index bab785d..0febc2a 100644
> --- a/blivet/devices.py
> +++ b/blivet/devices.py
> @@ -562,7 +562,8 @@ class StorageDevice(Device):
>          self._model = model
>          self.bus = bus
>  
> -        self.protected = False
> +        self._readonly = False
> +        self._protected = False
>          self.controllable = not flags.testing
>  
>          self.format = fmt
> @@ -805,6 +806,23 @@ class StorageDevice(Device):
>          else:
>              raise errors.DeviceError("device type %s is not resizable" % self.type)
>  
> +    @property
> +    def readonly(self):
> +        # A device is read-only if it or any parent device is read-only
> +        return self._readonly or any(p.readonly for p in self.parents)
> +
> +    @readonly.setter
> +    def readonly(self, value):
> +        self._readonly = value
> +
> +    @property
> +    def protected(self):
> +        return self.readonly or self._protected
> +
> +    @protected.setter
> +    def protected(self, value):
> +        self._protected = value
> +
>      #
>      # setup
>      #
> diff --git a/blivet/devicetree.py b/blivet/devicetree.py
> index 7c92288..74a485e 100644
> --- a/blivet/devicetree.py
> +++ b/blivet/devicetree.py
> @@ -658,14 +658,6 @@ class DeviceTree(object):
>              # ignore loop devices unless they're backed by a file
>              return (not loop.get_backing_file(name))
>  
> -        if self.udevDeviceIsDisk(info):
> -            # Ignore any readonly disks
> -            if util.get_sysfs_attr(info["sysfs_path"], 'ro') == '1':
> -                log.debug("Ignoring read only device %s", name)
> -                # FIXME: We have to handle this better, ie: not ignore these.
> -                self.addIgnoredDisk(name)
> -                return True
> -
>          # FIXME: check for virtual devices whose slaves are on the ignore list
>  
>      def udevDeviceIsDisk(self, info):
> @@ -1218,6 +1210,10 @@ class DeviceTree(object):
>              log.debug("no device obtained for %s", name)
>              return
>  
> +        # If this device is read-only, mark it as such now.
> +        if self.udevDeviceIsDisk(info) and util.get_sysfs_attr(info["sysfs_path"], 'ro') == '1':
> +            device.readonly = True
> +
>          # If this device is protected, mark it as such now. Once the tree
>          # has been populated, devices' protected attribute is how we will
>          # identify protected devices.
> -- 
> 2.1.0

Ack

-- 
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)


More information about the anaconda-patches mailing list