On Tue, Feb 17, 2026 at 10:55:13AM +0100, Peter Krempa wrote: > On Tue, Feb 17, 2026 at 09:47:08 +0000, Daniel P. Berrangé wrote: > > On Tue, Feb 17, 2026 at 10:29:38AM +0100, Peter Krempa wrote: > > > On Thu, Jan 15, 2026 at 17:55:01 -0500, Peter Xu wrote: > > > > v2: > > > > - Added R-bs > > > > - Updated description for removing zero-blocks [Markus] > > > > - Squashed the "fd: to file" test removal into the 2nd patch > > > > - I dropped the COLO patch, I have a local patch to remove colo > > > > migration > > > > completely, but looks like we won't do it.. Let's leave it for later > > > > but > > > > do the rest first > > > > > > > > This series removes two deprecated features for 11.0. > > > > > > > > Please review, thanks. > > > > > > > > Peter Xu (2): > > > > migration: Remove zero-blocks capability > > > > migration: Remove fd: support on files > > > > > > > > docs/about/deprecated.rst | 20 ------------- > > > > > > Note that per the 'MAINTAINERS' file, changes to any deprecations ought > > > to be CC'd to the libvirt list for visibility. > > > > > > In this case we've forgotten about the deprecation and didn't fix it > > > before the qemu cahnge was pushed. I'll send out patches soon, but keep > > > in mind to *always* CC the libvirt list with deprecations. > > > > I'm suprised to see libvirt broken at all here. > > > > AFAIR, the 'fd:' protocol inadvertantly gained support for targetting > > plain files, which the deprecation aimed to then revert (remove). The > > actual removal though seems to have targetted anything which is not a > > socket, which includes pipes, which libvirt was using. > > Libvirt is using pipes for *most* cases, but not all. There is one code > path (virsh restore without compression or cache bypass, when residing > on an actual filesystem (not a root squashed NFS)) which still can pass > a file FD to the migration code as 'fd:'. In all other cases we do pass > in a pipe in one way or another (via the compression program, > virFileWrapper (mandatorily used on equivalents of 'virsh save', or the > helper process used to access root-squashed NFS). The code is not easy > to follow because there are numerous layers where the wrapping of the > file into a pipe can happen, one of which is right next to the migration > code. I'll soon post patches.
NB if there is any scenario where we passed a plain file to QEMU, that would be a bug in libvirt. The iohelper was intended to be used in *all* cases where we had plain files, so that we can ensure poll() works sanely for QEMU, and that we don't end up with an unkillable QEMU due to a syscall stuck in kernel on an uninterruptible sleep on dead storage. With regards, Daniel -- |: https://berrange.com ~~ https://hachyderm.io/@berrange :| |: https://libvirt.org ~~ https://entangle-photo.org :| |: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
