[blivet:master 3/8] Omit special check for md devices in addUdevDevice().
David Lehman
dlehman at redhat.com
Fri Jun 20 14:12:35 UTC 2014
On 06/20/2014 06:47 AM, Anne Mulhern wrote:
>
>
>
>
> ----- Original Message -----
>> From: "David Lehman" <dlehman at redhat.com>
>> To: anaconda-patches at lists.fedorahosted.org
>> Sent: Thursday, June 19, 2014 1:05:22 PM
>> Subject: Re: [blivet:master 3/8] Omit special check for md devices in addUdevDevice().
>>
>> On 06/18/2014 02:05 PM, mulhern wrote:
>>> If the device appears to be an md device, just call addUdevMDDevice
>>> directly.
>>>
>>> Use udev_device_get_md_uuid() to get the mduuid of the array, but catch
>>> a key error. This has the same effect as the previous code, but is a bit
>>> more proper, even if more wordy.
>>>
>>> Signed-off-by: mulhern <amulhern at redhat.com>
>>> ---
>>> blivet/devicetree.py | 18 +++++++-----------
>>> 1 file changed, 7 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/blivet/devicetree.py b/blivet/devicetree.py
>>> index b4e5b00..36b8b05 100644
>>> --- a/blivet/devicetree.py
>>> +++ b/blivet/devicetree.py
>>> @@ -891,7 +891,12 @@ class DeviceTree(object):
>>> device = self.getDeviceByName(name)
>>>
>>> if device is None:
>>> - device = self.getDeviceByUuid(info.get("MD_UUID"))
>>> + try:
>>> + uuid = udev.udev_device_get_md_uuid(info)
>>> + except KeyError:
>>> + log.warning("failed to obtain uuid for mdraid device")
>>> + else:
>>> + device = self.getDeviceByUuid(uuid)
>>>
>>> # if we get here, we found all of the slave devices and
>>> # something must be wrong -- if all of the slaves are in
>>> @@ -1188,16 +1193,7 @@ class DeviceTree(object):
>>> device = self.addUdevDMDevice(info)
>>> elif udev.udev_device_is_md(info) and not
>>> udev.udev_device_get_md_container(info):
>>> log.info("%s is an md device", name)
>>> - try:
>>> - md_uuid = udev.udev_device_get_md_uuid(info)
>>> - except KeyError:
>>> - pass
>>> - else:
>>> - # try to find the device by uuid
>>> - device = self.getDeviceByUuid(md_uuid)
>>> -
>>> - if device is None:
>>> - device = self.addUdevMDDevice(info)
>>> + device = self.addUdevMDDevice(info)
>>> elif udev.udev_device_is_cdrom(info):
>>> log.info("%s is a cdrom", name)
>>> device = self.addUdevOpticalDevice(info)
>>>
>>
>> It looks okay to me except that now we'll always run that code to add
>> all of the member devices, which takes/wastes time. In all normal
>> circumstances the array will already be active and most likely already
>> in the tree by the time we get to it, so the expectation is that the
>> short-circuit lookup will succeed. Maybe you could add an attempt to
>> look up the device to the top of addUdevMDDevice if you want to clean up
>> addUDevDevice.
>>
>> David
>> _______________________________________________
>> anaconda-patches mailing list
>> anaconda-patches at lists.fedorahosted.org
>> https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches
>>
>
> Is there any possibility that the device would have already been
> added (because one of its members was added) but some of its
> slaves have not been added and should be added in addUdevMDDevice?
The members should all get added the same way, so no -- we don't need to
count on adding member devices via addUdevMDDevice unless by coincidence
due to some bug.
David
>
> - mulhern
>
> _______________________________________________
> anaconda-patches mailing list
> anaconda-patches at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches
>
More information about the anaconda-patches
mailing list