11__author__ = 'desultory'
2- __version__ = '4.15.4 '
2+ __version__ = '4.15.5 '
33
44from pathlib import Path
55from zenlib .util import contains , pretty_print
@@ -260,13 +260,13 @@ def autodetect_init_mount(self, parent=None) -> None:
260260 autodetect_init_mount (self , parent .parent )
261261
262262
263- def get_dm_info (self ) -> dict :
263+ def get_virtual_block_info (self ) -> dict :
264264 """
265- Populates the device mapper info.
265+ Populates the virtual block device info. (previously device mapper only)
266266 Disables device mapper autodetection if no virtual block devices are found.
267267 """
268268 if self .get ('_dm_info' ):
269- self .logger .debug ("Device mapper info already set." )
269+ self .logger .debug ("Virtual device info already set." )
270270 return
271271
272272 if not Path ('/sys/devices/virtual/block' ).exists ():
@@ -282,16 +282,23 @@ def get_dm_info(self) -> dict:
282282 'holders' : [holder .name for holder in (dm_device / 'holders' ).iterdir ()],
283283 'slaves' : [slave .name for slave in (dm_device / 'slaves' ).iterdir ()],
284284 'uuid' : (dm_device / 'dm/uuid' ).read_text ().strip ()}
285+ if uuid := (dm_device / 'dm/uuid' ).read_text ().strip ():
286+ self ['_dm_info' ][dm_device .name ]['uuid' ] = uuid
287+ elif uuid := (dm_device / 'md/uuid' ).read_text ().strip ():
288+ self ['_dm_info' ][dm_device .name ]['uuid' ] = uuid
289+ else :
290+ raise ValueError ("Failed to get virtual device uuid: %s" % dm_device .name )
291+
285292 try :
286293 self ['_dm_info' ][dm_device .name ]['name' ] = (dm_device / 'dm/name' ).read_text ().strip ()
287294 except FileNotFoundError :
288295 self .logger .warning ("No device mapper name found for: %s" % dm_device .name )
289296
290297 if self ['_dm_info' ]:
291- self .logger .info ("Found device mapper devices: %s" % ', ' .join (self ['_dm_info' ].keys ()))
292- self .logger .debug ("Device mapper info: %s" % pretty_print (self ['_dm_info' ]))
298+ self .logger .info ("Found virtual block devices: %s" % ', ' .join (self ['_dm_info' ].keys ()))
299+ self .logger .debug ("Virtual block device info: %s" % pretty_print (self ['_dm_info' ]))
293300 else :
294- self .logger .debug ("No device mapper devices found." )
301+ self .logger .debug ("No virtual block devices found." )
295302
296303
297304def _get_device_id (device : str ) -> str :
0 commit comments