mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-31 18:33:11 +00:00
9fd8ba3b2d
Checking the definition ABI when redefining checkpoints doesn't make much sense for the following reasons: * the domain definition in the checkpoint is mostly unused (a relic adopted from the snapshot code) * can be very easily overridden by deleting the checkpoint metadata before redefinition Rather than complicating the logic when we'll be taking into account that the domain definition may be missing, let's just remove the check. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
102 lines
3.3 KiB
C
102 lines
3.3 KiB
C
/*
|
|
* checkpoint_conf.h: domain checkpoint XML processing
|
|
* (based on snapshot_conf.h)
|
|
*
|
|
* Copyright (C) 2006-2019 Red Hat, Inc.
|
|
* Copyright (C) 2006-2008 Daniel P. Berrange
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "internal.h"
|
|
#include "domain_conf.h"
|
|
#include "moment_conf.h"
|
|
#include "virobject.h"
|
|
|
|
/* Items related to checkpoint state */
|
|
|
|
typedef enum {
|
|
VIR_DOMAIN_CHECKPOINT_TYPE_DEFAULT = 0,
|
|
VIR_DOMAIN_CHECKPOINT_TYPE_NONE,
|
|
VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP,
|
|
|
|
VIR_DOMAIN_CHECKPOINT_TYPE_LAST
|
|
} virDomainCheckpointType;
|
|
|
|
/* Stores disk-checkpoint information */
|
|
typedef struct _virDomainCheckpointDiskDef virDomainCheckpointDiskDef;
|
|
typedef virDomainCheckpointDiskDef *virDomainCheckpointDiskDefPtr;
|
|
struct _virDomainCheckpointDiskDef {
|
|
char *name; /* name matching the <target dev='...' of the domain */
|
|
int type; /* virDomainCheckpointType */
|
|
char *bitmap; /* bitmap name, if type is bitmap */
|
|
unsigned long long size; /* current checkpoint size in bytes */
|
|
bool sizeValid;
|
|
};
|
|
|
|
/* Stores the complete checkpoint metadata */
|
|
struct _virDomainCheckpointDef {
|
|
virDomainMomentDef parent;
|
|
|
|
/* Additional Public XML. */
|
|
size_t ndisks; /* should not exceed dom->ndisks */
|
|
virDomainCheckpointDiskDef *disks;
|
|
};
|
|
|
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainCheckpointDef, virObjectUnref);
|
|
|
|
typedef enum {
|
|
VIR_DOMAIN_CHECKPOINT_PARSE_REDEFINE = 1 << 0,
|
|
} virDomainCheckpointParseFlags;
|
|
|
|
typedef enum {
|
|
VIR_DOMAIN_CHECKPOINT_FORMAT_SECURE = 1 << 0,
|
|
VIR_DOMAIN_CHECKPOINT_FORMAT_NO_DOMAIN = 1 << 1,
|
|
VIR_DOMAIN_CHECKPOINT_FORMAT_SIZE = 1 << 2,
|
|
} virDomainCheckpointFormatFlags;
|
|
|
|
unsigned int
|
|
virDomainCheckpointFormatConvertXMLFlags(unsigned int flags);
|
|
|
|
virDomainCheckpointDefPtr
|
|
virDomainCheckpointDefParseString(const char *xmlStr,
|
|
virDomainXMLOptionPtr xmlopt,
|
|
void *parseOpaque,
|
|
unsigned int flags);
|
|
|
|
virDomainCheckpointDefPtr
|
|
virDomainCheckpointDefNew(void);
|
|
|
|
char *
|
|
virDomainCheckpointDefFormat(virDomainCheckpointDefPtr def,
|
|
virDomainXMLOptionPtr xmlopt,
|
|
unsigned int flags);
|
|
|
|
int
|
|
virDomainCheckpointAlignDisks(virDomainCheckpointDefPtr checkpoint);
|
|
|
|
int
|
|
virDomainCheckpointRedefinePrep(virDomainObjPtr vm,
|
|
virDomainCheckpointDefPtr def,
|
|
bool *update_current);
|
|
|
|
virDomainMomentObjPtr
|
|
virDomainCheckpointRedefineCommit(virDomainObjPtr vm,
|
|
virDomainCheckpointDefPtr *defptr);
|
|
|
|
VIR_ENUM_DECL(virDomainCheckpoint);
|