qga: Remove unneeded include file
This file does not depend on windows.h.
Signed-off-by: Stefan Weil <sw@weilnetz.de>Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>Reviewed-by: Andreas Färber <afaerber@suse.de>Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
qemu-ga: isa-serial support on Windows
Add support for isa-serial method for qemu-ga on Windows,Added -p command line parameter for serial port namespecification, e.g. "-p COM15".
Signed-off-by: Miki Mishael <mmishael@redhat.com>Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>...
qga: Fix memory allocation pasto
qmp_guest_file_seek() allocates memory for a GuestFileRead objectinstead of the GuestFileSeek object it actually uses. Harmless,because the GuestFileRead is slightly larger.
Signed-off-by: Markus Armbruster <armbru@redhat.com>...
qga: Don't require 'time' argument in guest-set-time command
As the description to the guest-set-time states, the command isthere to ease time synchronization after resume. If guest wassuspended for longer period of time, its system time can go offso badly, that even NTP refuses to set it. That's why the command...
qga: vss-win32: Fix interference with snapshot deletion by other VSS request
When a VSS requester such as vshadow.exe or diskshadow.exe requests todelete snapshots, qemu-ga VSS provider's DeleteSnapshots() is also calledand returns E_NOTIMPL, that makes the deletion fail....
qga: vss-win32: Fix interference with snapshot creation by other VSS requesters
When a VSS requester such as vshadow.exe or diskshadow.exe requests tocreate disk snapshots, Windows may choose qemu-ga VSS provider if it isonly provider registered on the system. However, because it provides only a...
qga: vss-win32: Use NULL as an invalid pointer for OpenEvent and CreateEvent
OpenEvent and CreateEvent WinAPI return NULL when failed to open/createevents handles, instead of INVALID_HANDLE_VALUE (although their returntypes are HANDLE).This replaces INVALID_HANDLE_VALUE related to event handles with NULL....
Use error_is_set() only when necessary
error_is_set(&var) is the same as var != NULL, but it takeswhole-program analysis to figure that out. Unnecessarily hard foroptimizers, static checkers, and human readers. Dumb it down toobvious.
Gets rid of several dozen Coverity false positives....
qga: Fix two format strings for MinGW
Both code locations cause a compiler warning. Using "%s" instead of "%lu" would result in a program crash if the wrong code were executed.
Signed-off-by: Stefan Weil <sw@weilnetz.de>Message-id: 1385409257-2522-1-git-send-email-sw@weilnetz.de...
Merge remote-tracking branch 'bonzini/tags/for-anthony' into staging
Here are a bunch of 1.7-tagged patches that I was afraidwere getting forgotten or that did not have a clear maintainer responsiblefor making a pull request.
qemu-ga: vss-win32: Install VSS provider COM+ application service
Currently, qemu-ga for Windows fails to execute guset-fsfreeze-freeze whenno user is logging in to Windows, with an error message: {"error":{"class":"GenericError", "desc":"failed to add C:\\ to snapshotset: (error: 8004230f)"}}...
qga: Fix compiler warnings (missing format attribute, wrong format strings)
gcc 4.8.2 reports this warning when extra warnings are enabled (-Wextra):
CC qga/commands.oqga/commands.c: In function ‘slog’:qga/commands.c:28:5: error: function might be possible candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]...
qga: Fix shutdown command of guest agent to work with SysV
For now guest agent uses following command to shutdown system:shutdown -P +0 "blabla" but this syntax works only with shutdown command from systemd or upstart,because SysV shutdown requires -h switch....
qga: Fix compilation for old versions of MinGW
While MinGW-w64 can compile the qga code, MinGW from Debian lenny(gcc-mingw32 4.4.2-3) shows these errors:
In file included from qga/vss-win32.c:17:qga/vss-win32/requester.h:31: error: expected »=«, »,«, »;«, »asm« or »__attribute__« before »requester_init«...
qemu-ga: execute fsfreeze-freeze in reverse order of mounts
Currently, fsfreeze-freeze may cause deadlock if a guest has loopback mountsof image files in its disk; e.g.:
qemu-ga: Add interface to traverse the qmp command list by QmpCommand
In the original code, qmp_get_command_list is used to constructa list of all commands' name. To get the information of all qgacommands, it traverses the name list and search the command info...
qemu-ga: Extend 'guest-info' command to expose flag 'success-response'
Now we have several qemu-ga commands not returning response on success.It has been documented in qga/qapi-schema.json already. This patch exposesthe 'success-response' flag by extending 'guest-info' command. With this...
qemu-ga: Add Windows VSS provider and requester as DLL
Adds VSS provider and requester as a qga-vss.dll, which is loaded byWindows VSS service as well as by qemu-ga.
"provider.cpp" implements a basic stub of a software VSS provider.Currently, this module only relays a frozen event from VSS service to the...
qemu-ga: Call Windows VSS requester in fsfreeze command handler
Support guest-fsfreeze-freeze and guest-fsfreeze-thaw commands for Windowsguests. When fsfreeze command is issued, it calls the VSS requester tofreeze filesystems and applications. On thaw command, it again tells the VSS...
qemu-ga: Install Windows VSS provider on `qemu-ga -s install'
Register QGA VSS provider library into Windows when qemu-ga is installed asWindows service ('-s install' option). It is deregistered when the serviceis uninstalled ('-s uninstall' option).
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>...
qga/service-win32.c: diagnostic output should go to stderr
Acked-by: Michael Roth <mdroth@linux.vnet.ibm.com>Reviewed-by: Eric Blake <eblake@redhat.com>Signed-off-by: Laszlo Ersek <lersek@redhat.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
ga_install_service(): nest error paths more idiomatically
qga: escape cmdline args when registering win32 service (CVE-2013-2231)
Reported-by: Lev Veyde <lveyde@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Signed-off-by: Laszlo Ersek <lersek@redhat.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qga: determine default state dir and pidfile dynamically
No effective change on POSIX, but on Win32 the defaults come from theenvironment / session.
Since commit 39097daf ("qemu-ga: use key-value store to avoid recycling fdhandles after restart") we've relied on the state directory for the fd...
qga: create state directory on win32
On Win32 the local state directory is application specific and users mightexpect qemu-ga to create it automatically.
Signed-off-by: Laszlo Ersek <lersek@redhat.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qga: remove undefined behavior in ga_install_service()
We shouldn't snprintf() from a buffer to the same buffer.
qga: save state directory in ga_install_service()
If the user selects a non-default state directory at service installationtime, we should remember it in the registered service.
Merge remote-tracking branch 'mdroth/qga-pull-2013-05-13' into staging
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
qga: distinguish binary modes in "guest_file_open_modes" map
In Windows guests this may make a difference.
Since the original patch (commit c689b4f1) sought to be pedantic and toconsider theoretical corner cases of portability, we should fix it upwhere it failed to come through in that pursuit....
qga: unlink just created guest-file if fchmod() or fdopen() fails on it
We shouldn't allow guest filesystem pollution on error paths.
Suggested-by: Eric Blake <eblake@redhat.com>Signed-off-by: Laszlo Ersek <lersek@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>...
remove double semicolons
Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
qga: set umask 0077 when daemonizing (CVE-2013-2007)
The qemu guest agent creates a bunch of files with insecure permissionswhen started in daemon mode. For example:
rw-rw-rw 1 root root /var/log/qemu-ga.log rw-rw-rw 1 root root /var/run/qga.state...
qga: add windows implementation for guest-get-time
Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com>Reviewed-by: Eric Blake <eblake@redhat.com>Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qga: add windows implementation for guest-set-time
qga schema: mark optional GuestLogicalProcessor.can-offline with #optional
Suggested-by: Eric Blake <eblake@redhat.com>Signed-off-by: Laszlo Ersek <lersek@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>...
qga schema: document generic QERR_UNSUPPORTED
Part of the wording was shamelessly stolen from Michael Roth's email.
Suggested-by: Michael Roth <mdroth@linux.vnet.ibm.com>Signed-off-by: Laszlo Ersek <lersek@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>...
qemu-ga: ga_get_fd_handle(): abort if fd_counter overflows
Today we reset fd_counter if it wraps, but it's better to abort()instead, as fd_counter should never reach INT64_MAX.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>...
Fix typos and misspellings
Fix various typos and misspellings. The bulk of these were found withcodespell.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>Reviewed-by: Stefan Weil <sw@weilnetz.de>Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
qga/main.c: Don't use g_key_file_get/set_int64
These functions don't exist until glib version 2.26. QEMU is currently onlymandating glib 2.12.
This patch replaces the functions with g_key_file_get/set_integer.
Unbreaks the build on Ubuntu 10.04 and RHEL 5.6....
qga: implement qmp_guest_set_vcpus() for Linux with sysfs
Signed-off-by: Laszlo Ersek <lersek@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qga: implement qmp_guest_get_vcpus() for Linux with sysfs
qga: introduce guest-get-vcpus / guest-set-vcpus with stubs
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 canspan beyond the life of the qemu-ga process that issued them. Since theseare issued starting from 0 on every restart, we run the risk of issuing...
qga: add guest-get-time command
Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com>Reviewed-by: Eric Blake <eblake@redhat.com>Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
*added stub for w32
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qga: add guest-set-time command
qga: cast to int for DWORD type
This patch fixes a compiler warning when cross-build:
qga/service-win32.c: In function 'printf_win_error':qga/service-win32.c:32:5: warning: format '%d' expects argument of type 'int', but argument 3 has type 'DWORD' [-Wformat]...
qemu-ga: fix confusing GAChannelMethod comparison
In commit 7868e26e5930f49ca942311885776b938dcf3b77("qemu-ga: add initial win32 support") support was added for qemu-ga onWindows using virtio-serial. Other channel methods (ISA serial and UNIXdomain socket) are not supported on Windows....
qemu-ga: make guest-sync-delimited available during fsfreeze
We currently maintain a whitelist of commands that are safe duringfsfreeze. During fsfreeze, we disable all commands that aren't part ofthat whitelist.
guest-sync-delimited meets the criteria for being whitelisted, and is...
qemu-ga: Fix unchecked strdup() by converting to g_strdup()
I figure it's freed somewhere deep down in QAPI, with g_free().
Signed-off-by: Markus Armbruster <armbru@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>...
qemu-ga: Plug leaks on qmp_guest_network_get_interfaces() error paths
Spotted by Coverity.
Signed-off-by: Markus Armbruster <armbru@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qemu-ga: Plug memory leak in guest_fsfreeze_cleanup()
Neglects to free errors allocated by qmp_guest_fsfreeze_thaw().Spotted by Coverity.
While there, drop the test whether return value is negative (it'snever true), and improve logging.
Replace non-portable asprintf by g_strdup_printf
g_strdup_printf already handles OOM errors, so some error handling inQEMU code can be removed.
Signed-off-by: Stefan Weil <sw@weilnetz.de>Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Merge remote-tracking branch 'mdroth/qga-pull-1-14-2013-2' into staging
qga: add missing commas in json docs
Signed-off-by: Eric Blake <eblake@redhat.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qemu-ga: Handle errors uniformely in ga_channel_open()
We detect errors in several places. One reports with g_error(), whichcalls abort(), the others report with g_critical(). Three of themexit(), three return false.
Always report with g_critical(), and return false....
qemu-ga: Plug fd leak on ga_channel_open() error paths
Signed-off-by: Markus Armbruster <armbru@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>...
qemu-ga: Plug fd leak on ga_channel_listen_accept() error path
qemu-ga: Plug file descriptor leak on ga_open_pidfile() error path
Spotted by Coverity. Also document why we keep it open on success.
Signed-off-by: Markus Armbruster <armbru@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>...
qemu-ga: Drop pointless lseek() from ga_open_pidfile()
After open(), the file offset is already zero, and neither lockf() norftruncate() change it.
qemu-ga: Document intentional fall through in channel_event_cb()
For clarity, and to hush up Coverity.
qemu-ga: add ga_open_logfile()
This function sets O_CLOEXEC on the log file fd so that it isn'tleaked to executed processes.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Acked-by: Amos Kong <akong@redhat.com>...
qemu-ga: ga_open_pidfile(): use qemu_open()
This ensures that O_CLOEXEC is passed to open(), this way thepid file fd is not leaked to executed processes.
Merge remote-tracking branch 'stefanha/trivial-patches' into staging
qga/channel-posix.c: Explicitly include string.h
Explicitly include string.h to avoid warnings under MacOS X/clangabout implicit declarations of strerror() and strlen().
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>Reviewed-by: Stefan Weil <sw@weilnetz.de>...
qemu-ga: bios_supports_mode(): improve error reporting
Most errors are QERR_UNDEFINED_ERROR today.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qemu-ga: guest_suspend(): improve error reporting
qemu-ga: execute hook to quiesce the guest on fsfreeze-freeze/thaw
To use the online disk snapshot for online-backup, application-levelconsistency of the snapshot image is required. However, currently theguest agent can provide only filesystem-level consistency, and the...
qemu-ga: qmp_guest_file_*: improve error reporting
Use error_setg_errno() when possible with an improved error description.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qemu-ga: qmp_guest_shutdown(): improve error reporting
Most errors are QERR_UNDEFINED_ERROR. Also, adds ga_wait_child() asa future commit will use it too.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>...
qemu-ga: build_fs_mount_list(): take an Error argument
qemu-ga: qmp_guest_fsfreeze_*(): get rid of sprintf() + error_set()
Convert them to error_setg_errno().
qemu-ga: qmp_guest_fstrim(): get rid of sprintf() + error_set()
qemu-ga: qmp_guest_network_get_interfaces(): get rid of snprintf() + error_set()
qemu-ga: guest_file_handle_find(): take an Error argument
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
*Fixed missing space character in error message
qemu-ga: qmp_guest_file_close(): fix fclose() error check
fclose() returns EOF on error.
misc: move include files to include/qemu/
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
qapi: move include files to include/qobject/
qemu-ga: move qemu-ga files to qga/
qga/channel-posix.c: Include headers it needs
Include: - <errno.h> for errno - <unistd.h> & <fcntl.h> for fcntl() - <stdlib.h> for exit() - "osdep.h" for qemu_open()
Some of those headers were probably being included by accident becausesome other headers were including qemu-common.h, but those headers...
qemu-ga: ask and print error information from qemu-sockets
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
qemu-sockets: add Error ** to all functions
This lets me adjust the clients to do proper error propagation first,thus avoiding temporary regressions in the quality of the error messages.
Merge branch 'trivial-patches' of git://github.com/stefanha/qemu
cleanup useless return sentence
This patch cleans up return sentences in the end of void functions.
Reported-by: Paolo Bonzini <pbonzini@redhat.com>Signed-off-by: Amos Kong <akong@redhat.com>Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
qemu-ga: prefer pstrcpy: consistently NUL-terminate ifreq.ifr_name
NUL-termination of the .ifr_name field is not required, but is fine(and preferable to using strncpy and leaving the reader to wonder),since the first thing the linux kernel does is to clear the last byte....
build: Fix linking failure for qemu-ga
This patch will fix the following linking failed:
LINK qemu-gagcc: error: qga/../qapi-generated/qga-qapi-types.o: No such file or directorygcc: error: qga/../qapi-generated/qga-qapi-visit.o: No such file or directory...
build: include qapi-generated/ files in qga/Makefile.objs
No reason to leave them out, and it will ensure that the dependenciesare picked up. Later we can perhaps move the files to anotherdirectory to avoid ../ usage.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>...
qemu-ga: add guest-fstrim command
FITRIM is a mounted filesystem feature to discard (or "trim") blocks whichare not in use by the filesystem. This is useful for solid-state drives(SSDs) and thinly-provisioned storage. Provide access to the featurefrom the host so that filesystems can be trimmed periodically or before...
qemu-ga: make names more generic for mount list functions
We will use these functions and types for more than FSFREEZE, so rename them.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>Reviewed-by: Michal Privoznik <mprivozn@redhat.com>...
build: move qga/ objects to nested Makefile.objs
qemu-ga: avoid blocking on atime update when reading /etc/mtab
Currently we re-read/re-process /etc/mtab to get an updated list ofmounts when guest-fsfreeze-thaw is called. This can cause an atimeupdate on /etc/mtab, which will block if we're in a frozen state....
qemu-ga: Fix use of environ on Darwin
Use _NSGetEnviron() helper to access the environment.
Signed-off-by: Andreas Färber <andreas.faerber@web.de>Cc: Charlie Somerville <charlie@charliesomerville.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qemu-ga: Fix missing environ declaration
Commit 3674838cd05268954bb6473239cd7f700a79bf0f uses the environ globalvariable, but is relying on environ to be declared somewhere else.
This worked for me because on F16 environ is declared in <unistd.h>, butthat doesn't happen in OpenBSD for example, causing a build failure....
qemu-ga: align versioning with QEMU_VERSION
Previously qemu-ga version was defined seperately. Since it is alignedwith QEMU releases, use QEMU_VERSION instead. This also implies theversion bump for 1.1[-rcN] release of qemu-ga.
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>...
qemu-ga: make reopen_fd_to_null() public
The next commit wants to use it.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Reviewed-by: Eric Blake <eblake@redhat.com>Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qemu-ga: guest-suspend: make the API synchronous
Currently, qemu-ga has a SIGCHLD handler that automatically reaps terminatedchildren processes. The idea is to avoid having qemu-ga commands blockedwaiting for children to terminate.
That approach has two problems:...
qemu-ga: guest-shutdown: become synchronous
Last commit dropped qemu-ga's SIGCHLD handler, used to automaticallyreap terminated children processes. This introduced a bug toqmp_guest_shutdown(): it will generate zombies.
This problem probably doesn't matter in the success case, as the VM...
qemu-ga: guest-shutdown: use only async-signal-safe functions
POSIX mandates1 that a child process of a multi-thread program usesonly async-signal-safe functions before exec(). We consider qemu-gato be multi-thread, because it uses glib.
However, qmp_guest_shutdown() uses functions that are not...
fix some common typos
These were identified using: http://github.com/lyda/misspell-checkand run like this to create a bourne shell script using GNU sed's-i option:
git ls-files|grep -vF .bin | misspellings -f - |grep -v '^ERROR:' |perl \-pe 's/^(.*?)\[(\d+)\]: (\w+) -> "(.*?)"$/sed -i '\''${2}s!$3!$4!'\'' $1/'...
Merge remote-tracking branch 'mdroth/qga-pull-4-27-12' into staging
qemu-ga: Implement alternative to O_ASYNC
ga_channel_open() was using open flag O_ASYNC for SIGIO-driven I/O.This breaks on illumos, so fall back to POSIX I_SETSIG ioctl (SIGPOLL).
Signed-off-by: Lee Essen <lee.essen@nowonline.co.uk>Signed-off-by: Andreas Färber <andreas.faerber@web.de>...