Get a vm fd using kvm API's ioctls
Hi all,
I'm trying to get the dirty bitmap of a specific VM, using KVM_GET_DIRTY_LOG ioctl.
For this purpose, I should be able to get the file descriptor of an existing VM by doing something like :
kvm_fd = open("/dev/kvm")
...
b = ioctl(KVM_GET_DIRTY_LOG, vm_fd)
I also can see, from the API documentation
(https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt), that there is the following restriction concerning VM ioctls :
"Only run VM ioctls from the same process (address space) that was used to create the VM."
Is there a way to get the fd of a running VM (created from an other process), or maybe a better/easier manner to get the dirty bitmap ?
Any help would be welcome.
Thanks,
Signature · 1 line
Vincent KHERBACHE
Paolo Bonzini
maintainerIl 05/02/2014 17:30, Vincent KHERBACHE ha scritto:
Quoted 17 lines
Hi all,
I'm trying to get the dirty bitmap of a specific VM, using
KVM_GET_DIRTY_LOGioctl.For this purpose, I should be able to get the file descriptor of an existing VM by doing something like :
kvm_fd=open("/dev/kvm")
...
b =ioctl(KVM_GET_DIRTY_LOG, vm_fd)I also can see, from the API documentation
(https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt), that there is the following restriction concerning VM ioctls :
Quoted 6 lines
"Only run VM ioctls from the same process (address space) that was used to create the VM."
Is there a way to get the fd of a running VM (created from an other process), or maybe a better/easier manner to get the dirty bitmap ?
You can get ask the other process to retrieve the dirty bitmap and place it in a shared memory segment.
However, note that KVM_GET_DIRTY_LOG retrieves _and clears_ the dirty bitmap. So if the "owner" of the running VM is already using the dirty bitmap, calling KVM_GET_DIRTY_LOG will likely break that usage.
Paolo
Quoted 25 lines · Paolo Bonzini
Il 05/02/2014 17:30, Vincent KHERBACHE ha scritto:
Quoted 17 lines
Hi all,
I'm trying to get the dirty bitmap of a specific VM, using
KVM_GET_DIRTY_LOGioctl.For this purpose, I should be able to get the file descriptor of an existing VM by doing something like :
kvm_fd=open("/dev/kvm")
...
b =ioctl(KVM_GET_DIRTY_LOG, vm_fd)I also can see, from the API documentation
(https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt), that there is the following restriction concerning VM ioctls :Quoted 6 lines
"Only run VM ioctls from the same process (address space) that was used to create the VM."
Is there a way to get the fd of a running VM (created from an other process), or maybe a better/easier manner to get the dirty bitmap ?
Quoted 6 lines
You can get ask the other process to retrieve the dirty bitmap and place it in a shared memory segment.
However, note that
KVM_GET_DIRTY_LOGretrieves_andclears_the dirty bitmap. So if the "owner" of the running VM is already using the dirty bitmap, callingKVM_GET_DIRTY_LOGwill likely break that usage.
Thank you for your reply !
I take note of your remark about the bitmap clearing, it could be an effective issue.
But I really have no idea of how can I 'ask' something the other process ?
Regards.
Signature · 1 line
Vincent KHERBACHE
Paolo Bonzini
maintainerIl 05/02/2014 18:17, Vincent KHERBACHE ha scritto:
Quoted 6 lines
Thank you for your reply !
I take note of your remark about the bitmap clearing, it could be an effective issue.
But I really have no idea of how can I 'ask' something the other process ?
You modify the source code for that program. :) It's likely QEMU or kvmtool, in either case it's free software. :)
Paolo
Ok this is what I feared, modifying Qemu is the only way to get the dirty bitmap from a VM launched by a Qemu process..
Ans this is definitely what I will do. Thanks again for your help !
Paolo Bonzini <[email protected]> a écrit :
Quoted 13 lines
Il 05/02/2014 18:17, Vincent KHERBACHE ha scritto:
Quoted 6 lines
Thank you for your reply !
I take note of your remark about the bitmap clearing, it could be an effective issue.
But I really have no idea of how can I 'ask' something the other
process ?
You modify the source code for that program. :) It's likely QEMU or kvmtool, in either case it's free software. :)
Paolo
Signature · 1 line
Vincent KHERBACHE