[libvirt] [PATCH 1/2] qemu: Split out various utility functions to qemu_util.c
Daniel P. Berrange
berrange at redhat.com
Thu Jan 3 17:37:30 UTC 2013
On Thu, Jan 03, 2013 at 05:45:49PM +0100, Peter Krempa wrote:
> ---
> po/POTFILES.in | 1 +
> src/Makefile.am | 1 +
> src/qemu/qemu_driver.c | 492 ++-----------------------------------------------
> src/qemu/qemu_util.c | 486 ++++++++++++++++++++++++++++++++++++++++++++++++
> src/qemu/qemu_util.h | 111 +++++++++++
> 5 files changed, 611 insertions(+), 480 deletions(-)
> create mode 100644 src/qemu/qemu_util.c
> create mode 100644 src/qemu/qemu_util.h
> +# include "qemu_domain.h"
> +
> +/* It would be nice to replace 'Qemud' with 'Qemu' but
> + * this magic string is ABI, so it can't be changed
> + */
> +# define QEMU_SAVE_MAGIC "LibvirtQemudSave"
> +# define QEMU_SAVE_PARTIAL "LibvirtQemudPart"
> +# define QEMU_SAVE_VERSION 2
> +
> +verify(sizeof(QEMU_SAVE_MAGIC) == sizeof(QEMU_SAVE_PARTIAL));
> +
> +typedef struct _virQEMUSaveHeader virQEMUSaveHeader;
> +typedef virQEMUSaveHeader *virQEMUSaveHeaderPtr;
> +struct _virQEMUSaveHeader {
> + char magic[sizeof(QEMU_SAVE_MAGIC)-1];
> + uint32_t version;
> + uint32_t xml_len;
> + uint32_t was_running;
> + uint32_t compressed;
> + uint32_t unused[15];
> +};
> +
> +
> +typedef enum {
> + VIR_DISK_CHAIN_NO_ACCESS,
> + VIR_DISK_CHAIN_READ_ONLY,
> + VIR_DISK_CHAIN_READ_WRITE,
> +} qemuDomainDiskChainMode;
> +
> +typedef enum {
> + QEMU_SAVE_FORMAT_RAW = 0,
> + QEMU_SAVE_FORMAT_GZIP = 1,
> + QEMU_SAVE_FORMAT_BZIP2 = 2,
> + /*
> + * Deprecated by xz and never used as part of a release
> + * QEMU_SAVE_FORMAT_LZMA
> + */
> + QEMU_SAVE_FORMAT_XZ = 3,
> + QEMU_SAVE_FORMAT_LZOP = 4,
> + /* Note: add new members only at the end.
> + These values are used in the on-disk format.
> + Do not change or re-use numbers. */
> +
> + QEMU_SAVE_FORMAT_LAST
> +} virQEMUSaveFormat;
> +
> +VIR_ENUM_DECL(qemuSaveCompression)
> +
> +
> +virDomainObjPtr qemuDomObjFromDomainDriver(virDomainPtr domain,
> + virQEMUDriverPtr *drv);
> +
> +virDomainObjPtr qemuDomObjFromDomain(virDomainPtr domain);
> +
> +virDomainObjPtr qemuDomObjFromSnapshot(virDomainSnapshotPtr snapshot);
> +
> +virDomainSnapshotObjPtr qemuSnapObjFromSnapshot(virDomainObjPtr vm,
> + virDomainSnapshotPtr snapshot);
> +
> +virDomainSnapshotObjPtr qemuSnapObjFromName(virDomainObjPtr vm,
> + const char *name);
All these should go in qemu_domain.{c,h}
> +int qemuOpenFile(virQEMUDriverPtr driver,
> + const char *path,
> + int oflags,
> + bool *needUnlink,
> + bool *bypassSecurityDriver);
qemu_conf.c
> +int qemuDomainPrepareDiskChainElement(virQEMUDriverPtr driver,
> + virDomainObjPtr vm,
> + virCgroupPtr cgroup,
> + virDomainDiskDefPtr disk,
> + const char *file,
> + qemuDomainDiskChainMode mode);
qemu_domain.h
> +int qemuDomainSaveMemory(virQEMUDriverPtr driver,
> + virDomainObjPtr vm,
> + const char *path,
> + const char *domXML,
> + int compressed,
> + bool was_running,
> + unsigned int flags,
> + enum qemuDomainAsyncJob asyncJob);
Not convinced this needs to move at all.
> +const char *qemuCompressProgramName(int compress);
qemu_domain.h
In summary, I don't think we should create a qemu_util.{c,h} file - any
file named util just ends up as a garbage dumping ground for code that
should be better placed elsewhere. See also util/util.h which should be
split up.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list