KubeVirt with libvirt 9.0.0: Requested operation is not valid: The tap0 interface already exists

Vasily Ulyanov vulyanov at suse.de
Thu Jan 19 12:36:55 UTC 2023


Looking at the code now.

src/util/virnetdevtap.c (qemuInterfaceEthernetConnect):

    if (net->managed_tap == VIR_TRISTATE_BOOL_NO) {
        ...
    } else {
        ...
        tap_create_flags |= VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING;
        ...
    }

Shouldn't it be the other way around? I.e. set
VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING flag in case managed='no'?

That is also mentioned in the commit message:

  The only exception is <interface type='ethernet'/> with <target
  managed='no'/> where we specifically want to let users use
  pre-created TAP device and basically not touch it at all.


On 19/01/2023 11:25, Vasily Ulyanov wrote:
> Hi All,
> 
> I am now trying to run our downstream KubeVirt build with a recent libvirt 9.0.0
> and I see a problem that libvirt refuses to start a VM if it is configured to
> use a pre-created tap device:
> 
>   virError(Code=55, Domain=0, Message='Requested operation is not valid: The
> tap0 interface already exists')
> 
> After looking at the git history I found the bellow commit [1] which explicitly
> forbids such a usecase. This basically breaks KubeVirt since libvirt there runs
> unprivileged and can only use the existing tap's.
> 
> I haven't yet look deeper into the original issue linked to the commit. Just
> wanted to raise this here first. Perhaps someone can provide feedback on that.
> What about some alternative approach instead? Or maybe it was discussed already...
> 
> BTW, I tested with the reverted commit and it was successful.
> 
> [1]
> https://gitlab.com/libvirt/libvirt/-/commit/a2ae3d299cf9c5ada8aa42ec4271748eb479dc27
> 

-- 
Vasily Ulyanov <vulyanov at suse.de>
Software Engineer, SUSE Labs Core



More information about the libvir-list mailing list