Statistics
| Branch: | Revision:

root / include / block / snapshot.h @ 8c116b0e

History | View | Annotate | Download (3.3 kB)

1
/*
2
 * Block layer snapshot related functions
3
 *
4
 * Copyright (c) 2003-2008 Fabrice Bellard
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a copy
7
 * of this software and associated documentation files (the "Software"), to deal
8
 * in the Software without restriction, including without limitation the rights
9
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
 * copies of the Software, and to permit persons to whom the Software is
11
 * furnished to do so, subject to the following conditions:
12
 *
13
 * The above copyright notice and this permission notice shall be included in
14
 * all copies or substantial portions of the Software.
15
 *
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
 * THE SOFTWARE.
23
 */
24

    
25
#ifndef SNAPSHOT_H
26
#define SNAPSHOT_H
27

    
28
#include "qemu-common.h"
29
#include "qapi/error.h"
30
#include "qemu/option.h"
31

    
32

    
33
#define SNAPSHOT_OPT_BASE       "snapshot."
34
#define SNAPSHOT_OPT_ID         "snapshot.id"
35
#define SNAPSHOT_OPT_NAME       "snapshot.name"
36

    
37
extern QemuOptsList internal_snapshot_opts;
38

    
39
typedef struct QEMUSnapshotInfo {
40
    char id_str[128]; /* unique snapshot id */
41
    /* the following fields are informative. They are not needed for
42
       the consistency of the snapshot */
43
    char name[256]; /* user chosen name */
44
    uint64_t vm_state_size; /* VM state info size */
45
    uint32_t date_sec; /* UTC date of the snapshot */
46
    uint32_t date_nsec;
47
    uint64_t vm_clock_nsec; /* VM clock relative to boot */
48
} QEMUSnapshotInfo;
49

    
50
int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info,
51
                       const char *name);
52
bool bdrv_snapshot_find_by_id_and_name(BlockDriverState *bs,
53
                                       const char *id,
54
                                       const char *name,
55
                                       QEMUSnapshotInfo *sn_info,
56
                                       Error **errp);
57
int bdrv_can_snapshot(BlockDriverState *bs);
58
int bdrv_snapshot_create(BlockDriverState *bs,
59
                         QEMUSnapshotInfo *sn_info);
60
int bdrv_snapshot_goto(BlockDriverState *bs,
61
                       const char *snapshot_id);
62
int bdrv_snapshot_delete(BlockDriverState *bs,
63
                         const char *snapshot_id,
64
                         const char *name,
65
                         Error **errp);
66
void bdrv_snapshot_delete_by_id_or_name(BlockDriverState *bs,
67
                                        const char *id_or_name,
68
                                        Error **errp);
69
int bdrv_snapshot_list(BlockDriverState *bs,
70
                       QEMUSnapshotInfo **psn_info);
71
int bdrv_snapshot_load_tmp(BlockDriverState *bs,
72
                           const char *snapshot_id,
73
                           const char *name,
74
                           Error **errp);
75
int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
76
                                         const char *id_or_name,
77
                                         Error **errp);
78
#endif