Skip to contentSkip to conversation

Get a vm fd using kvm API's ioctls

DISCUSSION Vincent KHERBACHE 2 participants 5 messages Feb 5, 2014 KVM

lore
Share & tools
lore
#0 lore raw

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
maintainer
#1 lore raw

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

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

#2 lore raw
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_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 :

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_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.

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
maintainer
#3 lore raw

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

#4 lore raw

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