Class: Bootloader::UdevMapping
- Inherits:
-
Object
- Object
- Bootloader::UdevMapping
- Extended by:
- Forwardable
- Includes:
- Singleton, Yast::Logger
- Defined in:
- src/lib/bootloader/udev_mapping.rb
Overview
Class manages mapping between udev names of disks and partitions.
Constant Summary
Instance Method Summary (collapse)
-
- (String?) to_kernel_device(dev)
Converts full udev name to kernel device ( disk or partition ).
-
- (String) to_mountby_device(dev)
Converts udev or kernel device (disk or partition) to udev name according to mountby option or kernel device if such udev device do not exists.
Instance Method Details
- (String?) to_kernel_device(dev)
Converts full udev name to kernel device ( disk or partition )
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'src/lib/bootloader/udev_mapping.rb', line 26 def to_kernel_device(dev) log.info "call to_kernel_device for #{dev}" raise "invalid device nil" unless dev # for non-udev devices try to see specific raid names (bnc#944041) if dev =~ /^\/dev\/disk\/by-/ # in mode config if not found, then return itself all_devices[dev] or Yast::Mode.config ? dev : raise("Unknown udev device #{dev}") else param = Yast::ArgRef.new({}) result = Yast::Storage.GetContVolInfo(dev, param) return dev unless result # not raid with funny name info = param.value return info["vdevice"] unless info["vdevice"].empty? return info["cdevice"] unless info["cdevice"].empty? raise "unknown value for raid device '#{info.inspect}'" end end |
- (String) to_mountby_device(dev)
Converts udev or kernel device (disk or partition) to udev name according to mountby option or kernel device if such udev device do not exists
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'src/lib/bootloader/udev_mapping.rb', line 52 def to_mountby_device(dev) kernel_dev = to_kernel_device(dev) log.info "#{dev} looked as kernel device name: #{kernel_dev}" storage_data = storage_data_for(kernel_dev) return kernel_dev unless storage_data mount_by = used_mount_by(storage_data) # explicit request to mount by kernel device return kernel_dev if mount_by == :device udev_data_key = MOUNT_BY_MAPPING_TO_UDEV[mount_by] raise "Internal error unknown mountby #{mount_by}" unless udev_data_key udev_pair = map_device_to_udev_devices( storage_data[udev_data_key], udev_data_key, kernel_dev ).first if !udev_pair log.warn "Cannot find udev link to satisfy mount by for #{kernel_dev}" return kernel_dev end # udev pair contain as first udev device and as second coresponding kernel device udev_pair.first end |