Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-703

Support to list mtdblock, pmem, mmcblk,pktcdvd node devices

Linking RHIVOS CVEs to...Migration: Automation ...Sync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Undefined Undefined
    • None
    • rhel-9.1.0
    • libvirt / General
    • None
    • None
    • rhel-virt-core-libvirt-1
    • ssg_virtualization
    • None
    • QE ack
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • If docs needed, set a value
    • None

      Description of problem:
      As subject

      Version-Release number of selected component (if applicable):
      libvirt-8.3.0-1.el9.x86_64

      How reproducible:
      100%

      Steps to Reproduce:
      1. Emulate pmem and mmcblk by QEMU. And check these node devices
      i. Start a RHEL9 VM with these XML:
      <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
      <maxMemory slots='16' unit='KiB'>4097152</maxMemory>
      ...
      <cpu mode='host-model' check='partial'>
      <numa>
      <cell id='0' cpus='0-1' memory='2095104' unit='KiB'/>
      </numa>
      </cpu>
      ...
      <devices>
      ...
      <memory model='virtio-pmem' access='shared'>
      <source>
      <path>/tmp/virtio_pmem</path>
      </source>
      <target>
      <size unit='KiB'>524288</size>
      </target>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
      </memory>
      </devices>
      <qemu:commandline>
      <qemu:arg value='-device'/>
      <qemu:arg value='sdhci-pci,id=sdhci,bus=pci.0,addr=0xf'/>
      <qemu:arg value='-device'/>
      <qemu:arg value='sd-card,drive=mydrive'/>
      <qemu:arg value='-drive'/>
      <qemu:arg value='id=mydrive,if=none,format=raw,file=/tmp/sdcard'/>
      </qemu:commandline>

      ii. Check the block:
      [root@localhost ~]# lsblk
      NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
      mmcblk0 179:0 0 128M 0 disk
      vda 252:0 0 10G 0 disk
      ├─vda1 252:1 0 1G 0 part /boot
      └─vda2 252:2 0 9G 0 part
      ├─rhel-root 253:0 0 8G 0 lvm /
      └─rhel-swap 253:1 0 1G 0 lvm [SWAP]
      pmem0 259:0 0 511.9M 1 disk

      [root@localhost ~]# udevadm info --name mmcblk0
      P: /devices/pci0000:00/0000:00:0f.0/mmc_host/mmc0/mmc0:4567/block/mmcblk0
      N: mmcblk0
      L: 0
      S: disk/by-id/mmc-QEMU__0xdeadbeef
      E: DEVPATH=/devices/pci0000:00/0000:00:0f.0/mmc_host/mmc0/mmc0:4567/block/mmcblk0
      E: DEVNAME=/dev/mmcblk0
      E: DEVTYPE=disk
      E: DISKSEQ=3
      E: MAJOR=179
      E: MINOR=0
      E: SUBSYSTEM=block
      E: USEC_INITIALIZED=15106162
      E: ID_SERIAL=0xdeadbeef
      E: ID_NAME=QEMU_
      E: DEVLINKS=/dev/disk/by-id/mmc-QEMU__0xdeadbeef
      E: TAGS=:systemd:
      E: CURRENT_TAGS=:systemd:

      [root@localhost ~]# udevadm info --name pmem0
      P: /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/region0/namespace0.0/block/pmem0
      N: pmem0
      L: 0
      E: DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/region0/namespace0.0/block/pmem0
      E: DEVNAME=/dev/pmem0
      E: DEVTYPE=disk
      E: DISKSEQ=2
      E: MAJOR=259
      E: MINOR=0
      E: SUBSYSTEM=block
      E: USEC_INITIALIZED=14732010
      E: TAGS=:systemd:
      E: CURRENT_TAGS=:systemd:

      iii. Check the node devices:
      [root@localhost ~]# virsh nodedev-list --cap storage
      block_vda

      No mmcblk and peme devices.

      2. For mtdblock device, since the kernel config of RHEL9(5.14.0-90.el9.x86_64) is "CONFIG_MTD=m, CONFIG_MTD_BLOCK=m, CONFIG_MTD_RAM not set. It cannot emulated by kernel in RHEL9. So I test it on Fedora rawhide(5.17.4-300.fc36.x86_64, libvirt-8.3.0-1.fc37.x86_64)
      i. Emulate mtdblock device

      1. modprobe mtdram total_size=200 erase_size=100
      2. modprobe mtdblock

      ii. Check mtdblock by lsblk, udev and virsh.
      ➜ ~ lsblk
      NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
      mtdblock0 31:0 0 200K 0 disk
      vda 252:0 0 80G 0 disk
      └─vda1 252:1 0 80G 0 part /
      vdb 252:16 0 5G 0 disk /mnt

      ➜ ~ udevadm info --name mtdblock0
      P: /devices/virtual/mtd/mtd0/mtdblock0
      M: mtdblock0
      R: 0
      U: block
      T: disk
      D: b 31:0
      N: mtdblock0
      L: 0
      Q: 11
      E: DEVPATH=/devices/virtual/mtd/mtd0/mtdblock0
      E: DEVNAME=/dev/mtdblock0
      E: DEVTYPE=disk
      E: DISKSEQ=11
      E: MAJOR=31
      E: MINOR=0
      E: SUBSYSTEM=block
      E: USEC_INITIALIZED=1724723462880
      E: TAGS=:systemd:
      E: CURRENT_TAGS=:systemd:

      ➜ ~ virsh nodedev-list --cap storage
      block_vda_230c9ab9_9ea9_433d_8
      block_vdb

      No mtdblock listed by virsh.

      Actual results:
      As above

      Expected results:
      Libvirt node device could list mtdblock, mmcblk, pmem devices.

      Additional info:
      See also: Bug 2045953 - 'virsh nodedev-list --cap storage' doesn't list host nvme storage

              virt-maint virt-maint
              rhn-support-hhan Han Han
              virt-maint virt-maint
              Yalan Zhang Yalan Zhang
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

                Created:
                Updated:
                Resolved: