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 :|


Reply via email to