]> git.proxmox.com Git - qemu.git/commit
qemu-ga: use key-value store to avoid recycling fd handles after restart
authorMichael Roth <mdroth@linux.vnet.ibm.com>
Fri, 1 Mar 2013 17:40:27 +0000 (11:40 -0600)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Mon, 11 Mar 2013 23:53:47 +0000 (18:53 -0500)
commit39097daf15c42243742667607d2cad2c9dc4f764
tree168d41fb814c5d2f528e5382a8bb36eee1bd694c
parentc5dcb6ae23a3ed7a01bae1cd75ce02abea31db5e
qemu-ga: use key-value store to avoid recycling fd handles after restart

Hosts hold on to handles provided by guest-file-open for periods that can
span beyond the life of the qemu-ga process that issued them. Since these
are issued starting from 0 on every restart, we run the risk of issuing
duplicate handles after restarts/reboots.

As a result, users with a stale copy of these handles may end up
reading/writing corrupted data due to their existing handles effectively
being re-assigned to an unexpected file or offset.

We unfortunately do not issue handles as strings, but as integers, so a
solution such as using UUIDs can't be implemented without introducing a
new interface.

As a workaround, we fix this by implementing a persistent key-value store
that will be used to track the value of the last handle that was issued
across restarts/reboots to avoid issuing duplicates.

The store is automatically written to the same directory we currently
set via --statedir to track fsfreeze state, and so should be applicable
for stable releases where this flag is supported.

A follow-up can use this same store for handling fsfreeze state, but
that change is cosmetic and left out for now.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Cc: qemu-stable@nongnu.org
* fixed guest_file_handle_add() return value from uint64_t to int64_t
qga/commands-posix.c
qga/guest-agent-core.h
qga/main.c