libvirt/src/conf/checkpoint_conf.h
Peter Krempa 9fd8ba3b2d virDomainCheckpointRedefineCommit: Don't check ABI of definition in checkpoint
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>
2020-12-04 16:15:03 +01:00

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);