On Sun, 25 Mar 2012 14:40:30 -0500 Michael Roth <mdr...@linux.vnet.ibm.com> wrote:
> > Signed-off-by: Michael Roth <mdr...@linux.vnet.ibm.com> > --- > qga/commands-posix.c | 111 +++++++++++++++++++++++++++++-------------------- > 1 files changed, 66 insertions(+), 45 deletions(-) Reviewed-by: Luiz Capitulino <lcapitul...@redhat.com> > > diff --git a/qga/commands-posix.c b/qga/commands-posix.c > index 7b2be2f..faf970d 100644 > --- a/qga/commands-posix.c > +++ b/qga/commands-posix.c > @@ -12,29 +12,30 @@ > */ > > #include <glib.h> > +#include <sys/types.h> > +#include <sys/ioctl.h> > +#include "qga/guest-agent-core.h" > +#include "qga-qmp-commands.h" > +#include "qerror.h" > +#include "qemu-queue.h" > +#include "host-utils.h" > > #if defined(__linux__) > #include <mntent.h> > #include <linux/fs.h> > - > -#if defined(__linux__) && defined(FIFREEZE) > -#define CONFIG_FSFREEZE > -#endif > -#endif > - > -#include <sys/types.h> > -#include <sys/ioctl.h> > #include <ifaddrs.h> > #include <arpa/inet.h> > #include <sys/socket.h> > #include <net/if.h> > #include <sys/wait.h> > -#include "qga/guest-agent-core.h" > -#include "qga-qmp-commands.h" > -#include "qerror.h" > -#include "qemu-queue.h" > -#include "host-utils.h" > > +#if defined(__linux__) && defined(FIFREEZE) > +#define CONFIG_FSFREEZE > +#endif > +#endif > + > +#if defined(__linux__) > +/* TODO: use this in place of all post-fork() fclose(std*) callers */ > static void reopen_fd_to_null(int fd) > { > int nullfd; > @@ -50,6 +51,7 @@ static void reopen_fd_to_null(int fd) > close(nullfd); > } > } > +#endif /* defined(__linux__) */ > > void qmp_guest_shutdown(bool has_mode, const char *mode, Error **err) > { > @@ -309,7 +311,11 @@ static void guest_file_init(void) > QTAILQ_INIT(&guest_file_state.filehandles); > } > > +/* linux-specific implementations. avoid this if at all possible. */ > +#if defined(__linux__) > + > #if defined(CONFIG_FSFREEZE) > + > static void disable_logging(void) > { > ga_disable_logging(ga_state); > @@ -505,38 +511,7 @@ static void guest_fsfreeze_cleanup(void) > } > } > } > -#else > -/* > - * Return status of freeze/thaw > - */ > -GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **err) > -{ > - error_set(err, QERR_UNSUPPORTED); > - > - return 0; > -} > - > -/* > - * Walk list of mounted file systems in the guest, and freeze the ones which > - * are real local file systems. > - */ > -int64_t qmp_guest_fsfreeze_freeze(Error **err) > -{ > - error_set(err, QERR_UNSUPPORTED); > - > - return 0; > -} > - > -/* > - * Walk list of frozen file systems in the guest, and thaw them. > - */ > -int64_t qmp_guest_fsfreeze_thaw(Error **err) > -{ > - error_set(err, QERR_UNSUPPORTED); > - > - return 0; > -} > -#endif > +#endif /* CONFIG_FSFREEZE */ > > #define LINUX_SYS_STATE_FILE "/sys/power/state" > #define SUSPEND_SUPPORTED 0 > @@ -904,6 +879,52 @@ error: > return NULL; > } > > +#else /* defined(__linux__) */ > + > +GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **err) > +{ > + error_set(err, QERR_UNSUPPORTED); > + > + return 0; > +} > + > +int64_t qmp_guest_fsfreeze_freeze(Error **err) > +{ > + error_set(err, QERR_UNSUPPORTED); > + > + return 0; > +} > + > +int64_t qmp_guest_fsfreeze_thaw(Error **err) > +{ > + error_set(err, QERR_UNSUPPORTED); > + > + return 0; > +} > + > +void qmp_guest_suspend_disk(Error **err) > +{ > + error_set(err, QERR_UNSUPPORTED); > +} > + > +void qmp_guest_suspend_ram(Error **err) > +{ > + error_set(err, QERR_UNSUPPORTED); > +} > + > +void qmp_guest_suspend_hybrid(Error **err) > +{ > + error_set(err, QERR_UNSUPPORTED); > +} > + > +GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp) > +{ > + error_set(errp, QERR_UNSUPPORTED); > + return NULL; > +} > + > +#endif > + > /* register init/cleanup routines for stateful command groups */ > void ga_command_state_init(GAState *s, GACommandState *cs) > {