Comment 76 for bug 1847361

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Reinstall into saved .so files in versioned directory:

root@b:~# apt install --reinstall qemu-block-extra qemu-kvm qemu-system-common qemu-system-x86 qemu-utils
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 5 reinstalled, 0 to remove and 0 not upgraded.
Need to get 6792 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 qemu-system-common amd64 1:2.11+dfsg-1ubuntu7.24 [672 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 qemu-block-extra amd64 1:2.11+dfsg-1ubuntu7.24 [40.2 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 qemu-kvm amd64 1:2.11+dfsg-1ubuntu7.24 [13.2 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 qemu-system-x86 amd64 1:2.11+dfsg-1ubuntu7.24 [5197 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 qemu-utils amd64 1:2.11+dfsg-1ubuntu7.24 [869 kB]
Fetched 6792 kB in 3s (2170 kB/s)
(Reading database ... 37924 files and directories currently installed.)
Preparing to unpack .../qemu-system-common_1%3a2.11+dfsg-1ubuntu7.24_amd64.deb ...
Unpacking qemu-system-common (1:2.11+dfsg-1ubuntu7.24) over (1:2.11+dfsg-1ubuntu7.24) ...
Preparing to unpack .../qemu-block-extra_1%3a2.11+dfsg-1ubuntu7.24_amd64.deb ...
Unpacking qemu-block-extra:amd64 (1:2.11+dfsg-1ubuntu7.24) over (1:2.11+dfsg-1ubuntu7.24) ...
Preparing to unpack .../qemu-kvm_1%3a2.11+dfsg-1ubuntu7.24_amd64.deb ...
Unpacking qemu-kvm (1:2.11+dfsg-1ubuntu7.24) over (1:2.11+dfsg-1ubuntu7.24) ...
Preparing to unpack .../qemu-system-x86_1%3a2.11+dfsg-1ubuntu7.24_amd64.deb ...
Unpacking qemu-system-x86 (1:2.11+dfsg-1ubuntu7.24) over (1:2.11+dfsg-1ubuntu7.24) ...
Preparing to unpack .../qemu-utils_1%3a2.11+dfsg-1ubuntu7.24_amd64.deb ...
Unpacking qemu-utils (1:2.11+dfsg-1ubuntu7.24) over (1:2.11+dfsg-1ubuntu7.24) ...
Setting up qemu-block-extra:amd64 (1:2.11+dfsg-1ubuntu7.24) ...
Setting up qemu-utils (1:2.11+dfsg-1ubuntu7.24) ...
Setting up qemu-system-common (1:2.11+dfsg-1ubuntu7.24) ...
Setting up qemu-system-x86 (1:2.11+dfsg-1ubuntu7.24) ...
Setting up qemu-kvm (1:2.11+dfsg-1ubuntu7.24) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
root@b:~# ll /var/run/qemu/Debian_1_2.11+dfsg-1ubuntu7.24/
total 92
drwxr-xr-x 2 root root 100 May 14 05:45 ./
drwxr-xr-x 3 root root 60 May 14 05:45 ../
-rw-r--r-- 1 root root 25600 May 14 05:45 block-curl.so
-rw-r--r-- 1 root root 36008 May 14 05:45 block-iscsi.so
-rw-r--r-- 1 root root 27712 May 14 05:45 block-rbd.so

Same for Eoan:
root@e:~# ll /var/run/qemu/Debian_1_4.0+dfsg-0ubuntu9.5/
total 120
drwxr-xr-x 2 root root 100 May 14 05:45 ./
drwxr-xr-x 3 root root 60 May 14 05:45 ../
-rw-r--r-- 1 root root 34280 May 14 05:45 block-curl.so
-rw-r--r-- 1 root root 49256 May 14 05:45 block-iscsi.so
-rw-r--r-- 1 root root 31752 May 14 05:45 block-rbd.so

 rename -v 's/\.so/.so.unavailable/' /usr/lib/x86_64-linux-gnu/qemu/*
/usr/lib/x86_64-linux-gnu/qemu/block-curl.so renamed as /usr/lib/x86_64-linux-gnu/qemu/block-curl.so.unavailable
/usr/lib/x86_64-linux-gnu/qemu/block-iscsi.so renamed as /usr/lib/x86_64-linux-gnu/qemu/block-iscsi.so.unavailable
/usr/lib/x86_64-linux-gnu/qemu/block-rbd.so renamed as /usr/lib/x86_64-linux-gnu/qemu/block-rbd.so.unavailable

Qemu is running but has no .so loaded:
root@b:~# ps axlf | grep $(pidof qemu-system-x86_64)
0 0 90171 78633 20 0 14852 844 pipe_w S+ ? 0:00 \_ grep --color=auto 90077
6 64055 90077 1 20 0 2299220 455504 poll_s Sl ? 0:23 qemu-system-x86_64 -enable-kvm -name guest=lateload,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-lateload/master-key.aes -machine pc-i440fx-bionic,accel=kvm,usb=off,dump-guest-core=off -m 512 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid c1cc7eea-cc58-4473-bc93-cf50acf584be -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-1-lateload/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/var/lib/uvtool/libvirt/images/lateload.qcow,format=qcow2,if=none,id=drive-virtio-disk0 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive file=/var/lib/uvtool/libvirt/images/lateload-ds.qcow,format=qcow2,if=none,id=drive-virtio-disk1 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,id=virtio-disk1 -netdev tap,fd=28,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:0e:ac:75,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 127.0.0.1:0 -device cirrus-vga,id=video0,bus=pci.0,addr=0x2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -msg timestamp=on

# cat /proc/$(pidof qemu-system-x86_64)/maps | grep curl

Attaching the device now:
# virsh attach-device lateload curldisk.xml
Device attached successfully

And we see the upgrade-path loaded:
# cat /proc/$(pidof qemu-system-x86_64)/maps | grep curl
7fa662893000-7fa66289f000 r--p 00000000 00:4b 10490 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.5.0
7fa66289f000-7fa662900000 r-xp 0000c000 00:4b 10490 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.5.0
7fa662900000-7fa66291b000 r--p 0006d000 00:4b 10490 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.5.0
7fa66291b000-7fa66291f000 r--p 00087000 00:4b 10490 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.5.0
7fa66291f000-7fa662920000 rw-p 0008b000 00:4b 10490 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.5.0
7fa662929000-7fa66292b000 r--p 00000000 00:58 210 /run/qemu/Debian_1_4.0+dfsg-0ubuntu9.5/block-curl.so
7fa66292b000-7fa66292e000 r-xp 00002000 00:58 210 /run/qemu/Debian_1_4.0+dfsg-0ubuntu9.5/block-curl.so
7fa66292e000-7fa66292f000 r--p 00005000 00:58 210 /run/qemu/Debian_1_4.0+dfsg-0ubuntu9.5/block-curl.so
7fa66292f000-7fa662930000 ---p 00006000 00:58 210 /run/qemu/Debian_1_4.0+dfsg-0ubuntu9.5/block-curl.so
7fa662930000-7fa662931000 r--p 00006000 00:58 210 /run/qemu/Debian_1_4.0+dfsg-0ubuntu9.5/block-curl.so
7fa662931000-7fa662932000 rw-p 00007000 00:58 210 /run/qemu/Debian_1_4.0+dfsg-0ubuntu9.5/block-curl.so

For the sake of completeness I tried another .so via:
  <disk type='network' device='disk'>
    <driver name='qemu' type='raw'/>
    <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/2'>
      <host name='example.com' port='3260'/>
    </source>
    <target dev='vdc' bus='virtio'/>
  </disk>

# cat /proc/$(pidof qemu-system-x86_64)/maps | grep scsi
<empty>

Atfer the load we have usually:
7f8e3b2a1000-7f8e3b2a2000 rw-p 00008000 00:43 83919 /usr/lib/x86_64-linux-gnu/qemu/block-iscsi.so
7f8e3b098000-7f8e3b099000 rw-p 00024000 00:43 43986 /usr/lib/x86_64-linux-gnu/libiscsi.so.7.0.2

Now with the old libs removed we have:

---

in case some one removed the files (broken install anyway) it is an error but not failing:
Preparing to unpack .../qemu-block-extra_1%3a2.11+dfsg-1ubuntu7.24_amd64.deb ...
cp: cannot stat '/usr/lib/x86_64-linux-gnu/qemu/block-*.so': No such file or directory
dpkg: warning: old qemu-block-extra:amd64 package pre-removal script subprocess returned error exit status 1
dpkg: trying script from the new package instead ...
dpkg: ... it looks like that went OK

---

This was blocked all the time by the build errors due to the kernel.
But it seems the bionic backport has an issue.
It has in configure
   --enable-module-upgrades \
and
  alt path mod load yes

So it seems good, but the code in module_load_one is not reached.

---

Summary for now:
 - Eoan verified qemu+libvirt
 - Bionic libvirt (apparmor) seems fine but qemu has an issue catching the config value
Therefore not setting B-verified yet