mirror of
https://github.com/libvirt/libvirt.git
synced 2026-09-03 20:53:04 -05:00
save: new public API to bypass file system cache on save/restore
In order to choose whether to use O_DIRECT when saving a domain image to a file, we need a new flag. But virDomainSave was implemented before our policy of all new APIs having a flag argument. Likewise for virDomainRestore when restoring from a file. The new flag name is chosen as CACHE_BYPASS so as not to preclude a future solution that uses posix_fadvise once the Linux kernel has a smarter implementation of that interface. * include/libvirt/libvirt.h.in (virDomainCreateFlags) (virDomainCoreDumpFlags): Add a flag. (virDomainSaveFlags, virDomainRestoreFlags): New prototypes. * src/libvirt.c (virDomainSaveFlags, virDomainRestoreFlags): New API. * src/libvirt_public.syms: Export them. * src/driver.h (virDrvDomainSaveFlags, virDrvDomainRestoreFlags): New driver callbacks.
This commit is contained in:
@@ -232,9 +232,10 @@ typedef virDomainInfo *virDomainInfoPtr;
|
||||
* Domain.
|
||||
*/
|
||||
typedef enum {
|
||||
VIR_DOMAIN_NONE = 0, /* Default behavior */
|
||||
VIR_DOMAIN_START_PAUSED = 1 << 0, /* Launch guest in paused state */
|
||||
VIR_DOMAIN_START_AUTODESTROY = 1 << 1, /* Automatically kill guest when virConnectPtr is closed */
|
||||
VIR_DOMAIN_NONE = 0, /* Default behavior */
|
||||
VIR_DOMAIN_START_PAUSED = 1 << 0, /* Launch guest in paused state */
|
||||
VIR_DOMAIN_START_AUTODESTROY = 1 << 1, /* Automatically kill guest when virConnectPtr is closed */
|
||||
VIR_DOMAIN_START_BYPASS_CACHE = 1 << 2, /* Avoid file system cache pollution */
|
||||
} virDomainCreateFlags;
|
||||
|
||||
|
||||
@@ -657,8 +658,9 @@ typedef virDomainMemoryStatStruct *virDomainMemoryStatPtr;
|
||||
|
||||
/* Domain core dump flags. */
|
||||
typedef enum {
|
||||
VIR_DUMP_CRASH = (1 << 0), /* crash after dump */
|
||||
VIR_DUMP_LIVE = (1 << 1), /* live dump */
|
||||
VIR_DUMP_CRASH = (1 << 0), /* crash after dump */
|
||||
VIR_DUMP_LIVE = (1 << 1), /* live dump */
|
||||
VIR_DUMP_BYPASS_CACHE = (1 << 2), /* avoid file system cache pollution */
|
||||
} virDomainCoreDumpFlags;
|
||||
|
||||
/* Domain migration flags. */
|
||||
@@ -941,10 +943,28 @@ int virDomainResume (virDomainPtr domain);
|
||||
/*
|
||||
* Domain save/restore
|
||||
*/
|
||||
|
||||
/**
|
||||
* virDomainSaveRestoreFlags:
|
||||
* Flags for use in virDomainSaveFlags(), virDomainManagedSave(), and
|
||||
* virDomainRestoreFlags().
|
||||
*/
|
||||
typedef enum {
|
||||
VIR_DOMAIN_SAVE_BYPASS_CACHE = 1 << 0, /* Avoid file system cache pollution */
|
||||
} virDomainSaveRestoreFlags;
|
||||
|
||||
int virDomainSave (virDomainPtr domain,
|
||||
const char *to);
|
||||
int virDomainSaveFlags (virDomainPtr domain,
|
||||
const char *to,
|
||||
const char *dxml,
|
||||
unsigned int flags);
|
||||
int virDomainRestore (virConnectPtr conn,
|
||||
const char *from);
|
||||
int virDomainRestoreFlags (virConnectPtr conn,
|
||||
const char *from,
|
||||
const char *dxml,
|
||||
unsigned int flags);
|
||||
|
||||
/*
|
||||
* Managed domain save
|
||||
|
||||
Reference in New Issue
Block a user