Re: Should KVM creation fail if debugfs fails?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02.11.18 11:10, Okash Khawaja wrote:
> On Wed, Oct 31, 2018 at 1:17 AM Okash Khawaja <okash.khawaja@xxxxxxxxx> wrote:
>>
>> Hi,
>>
>> Apologies if this has already been discussed but hasn't crossed my
>> eyes. It seems that KVM_CREATE_VM ioctl will fail with -ENOMEM if the
>> call to kvm_create_vm_debugfs() returns negative value. Is debugfs
>> essential for KVM operation?
>>
>> I came across this when testing with a bpf-next kernel I manually
>> compiled, from around v4.17. Creating a VM from QEMU threw following
>> error:
>>
>> ioctl(KVM_CREATE_VM) failed: 12 Cannot allocate memory
>>
>> Running 4.19.0 kernel fixed the problem. Please note that
>> kvm_create_vm_debugfs() would not fail if debugfs hasn't been
>> registered at all.
>>
>> Thanks,
>> Okash
> 
> `kvm_create_vm_debugfs()` currently fails only if it fails to allocate
> memory so in a way it does make sense that KVM_CREATE_VM ioctl fails
> with -ENOMEM. However, failing to create VM because debugfs failed
> doesn't seem optimal to me. For example, let's say we change
> `kvm_create_vm_debugfs()` to add more error exit conditions which
> aren't memory allocation related, then still the ioctl will fail with
> -ENOMEM, unless we change the calling code to check return value of
> `kvm_create_vm_debugfs()`. Also, if the memory pressure is transient
> and `kvm_create_vm_debugfs()` fails because of that, the whole VM
> creation shouldn't fail. But most importantly, since VM debugfs stat
> isn't necessary for VM to function, VM creation shouldn't fail.

It's okay to ignore corner cases if it makes life easier (e.g. handling
debugfs created or not when tearing down a VM).

> 
> Please correct me if I'm wrong with my reasoning above. Ultimately, we
> should check errors in `kvm_create_vm_debugfs()` and clean up files
> and directories if needed and not fail KVM_CREATE_VM ioctl. If this
> makes sense, I can put together a patch :)
> 

Is this really worth investing time and effort?

Why I am asking: Your kernel cannot even allocate memory for debugfs.
How are you supposed to do anything with that VM? Maybe you cannot even
create a VCPU. Maybe the OOM killer will zap your process. Is there any
reasonable setup where this would be expected to work?

"memory pressure is transient" is not a convincing argument. This sounds
like a broken setup to me.

-- 

Thanks,

David / dhildenb



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux