Looking further into it, this is somehow caused by changes to the nbd module. Before 4.8 it was actually not creating any uevents on its own. Still there were events to be seen. With 4.8 they code changed to generate a change event, but also will delay the capacity change until the moment the socket is connected. And this seems to prevent whatever is otherwise producing the change event and triggering a partition scan. The nbd driver itself does not do that (like for example the loop driver does). So it could be that this had ever worked only because of the mysterious helper.
It seems that reverting a bit back to change the capacity as soon as it is set by ioctl (there are three ioctls which do this, so the values likely get touched multiple times, too) will again get the partition detected reliably. Not sure this can be guaranteed always... -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1628336 Title: mount-image-callback cannot mount partitioned disk image Status in linux package in Ubuntu: Fix Committed Status in linux source package in Yakkety: Fix Committed Bug description: This fails on 4.8.0-17-generic and passes on 4.4.0-9136-generic $ sudo apt-get update $ sudo apt-get install -qy cloud-image-utils $ wget http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img $ cp xenial-server-cloudimg-amd64-disk1.img disk.img $ sudo mount-image-callback xenial-server-cloudimg-amd64-disk1.img -v ls _MOUNTPOINT_ replaced string _MOUNTPOINT_ in arguments arg 1 waiting on pidfile for /dev/nbd0 in /sys/block/nbd0/pid connected xenial-server-cloudimg-amd64-disk1.img (qcow2) to /dev/nbd0. waiting for device. partitioned disk. waiting for /dev/nbd0p1 part=1 to be ready. waiting for /dev/nbd0p1 part=1 to be ready. waiting for /dev/nbd0p1 part=1 to be ready. waiting for /dev/nbd0p1 part=1 to be ready. waiting for /dev/nbd0p1 part=1 to be ready. waiting for /dev/nbd0p1 part=1 to be ready. waiting for /dev/nbd0p1 part=1 to be ready. waiting for /dev/nbd0p1 part=1 to be ready. waiting for /dev/nbd0p1 part=1 to be ready. gave up on waiting for /dev/nbd0p1 $ echo $? 1 On an identical system other than 'apt-get install linux-virtual' to get the new kernel, you see: $ uname -r 4.4.0-9136-generic $ sudo mount-image-callback disk.img -v ls _MOUNTPOINT_ replaced string _MOUNTPOINT_ in arguments arg 1 waiting on pidfile for /dev/nbd0 in /sys/block/nbd0/pid connected disk.img (qcow2) to /dev/nbd0. waiting for device. partitioned disk. mounted /dev/nbd0p1 via qemu-nbd /dev/nbd0 invoking: MOUNTPOINT=/tmp/mount-image-callback.Y8D4lk/mp ls /tmp/mount-image-callback.Y8D4lk/mp bin etc lib media proc sbin sys var boot home lib64 mnt root snap tmp vmlinuz dev initrd.img lost+found opt run srv usr cmd returned 0. unmounting /tmp/mount-image-callback.Y8D4lk/mp ProblemType: Bug DistroRelease: Ubuntu 16.10 Package: linux-image-4.8.0-17-generic 4.8.0-17.19 ProcVersionSignature: User Name 4.8.0-17.19-generic 4.8.0-rc7 Uname: Linux 4.8.0-17-generic x86_64 AlsaDevices: total 0 crw-rw---- 1 root audio 116, 1 Sep 27 19:04 seq crw-rw---- 1 root audio 116, 33 Sep 27 19:04 timer AplayDevices: Error: [Errno 2] No such file or directory: 'aplay' ApportVersion: 2.20.3-0ubuntu7 Architecture: amd64 ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord' AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/seq', '/dev/snd/timer'] failed with exit code 1: CRDA: N/A Date: Wed Sep 28 00:58:49 2016 Ec2AMI: ami-00000438 Ec2AMIManifest: FIXME Ec2AvailabilityZone: nova Ec2InstanceType: m1.small Ec2Kernel: unavailable Ec2Ramdisk: unavailable IwConfig: Error: [Errno 2] No such file or directory: 'iwconfig' Lsusb: Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub MachineType: OpenStack Foundation OpenStack Nova PciMultimedia: ProcEnviron: TERM=xterm-256color PATH=(custom, no user) XDG_RUNTIME_DIR=<set> LANG=en_US.UTF-8 SHELL=/bin/bash ProcFB: ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.8.0-17-generic root=UUID=072136f3-5666-4381-83bd-8d7175059be3 ro console=tty1 console=ttyS0 RelatedPackageVersions: linux-restricted-modules-4.8.0-17-generic N/A linux-backports-modules-4.8.0-17-generic N/A linux-firmware N/A RfKill: Error: [Errno 2] No such file or directory: 'rfkill' SourcePackage: linux UpgradeStatus: No upgrade log present (probably fresh install) dmi.bios.date: 04/01/2014 dmi.bios.vendor: SeaBIOS dmi.bios.version: Ubuntu-1.8.2-1ubuntu1~cloud0 dmi.chassis.type: 1 dmi.chassis.vendor: QEMU dmi.chassis.version: pc-i440fx-vivid dmi.modalias: dmi:bvnSeaBIOS:bvrUbuntu-1.8.2-1ubuntu1~cloud0:bd04/01/2014:svnOpenStackFoundation:pnOpenStackNova:pvr12.0.3:cvnQEMU:ct1:cvrpc-i440fx-vivid: dmi.product.name: OpenStack Nova dmi.product.version: 12.0.3 dmi.sys.vendor: OpenStack Foundation To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1628336/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp