Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.1:Update
xen
snapshot-ioemu-delete.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File snapshot-ioemu-delete.patch of Package xen
Index: xen-3.3.1-testing/tools/ioemu-remote/xenstore.c =================================================================== --- xen-3.3.1-testing.orig/tools/ioemu-remote/xenstore.c +++ xen-3.3.1-testing/tools/ioemu-remote/xenstore.c @@ -674,6 +674,19 @@ static void xenstore_process_dm_command_ } snapshot_name = xs_read(xsh, XBT_NULL, path, &len); + } else if (!strncmp(command, "snapshot-delete", len)) { + + if (pasprintf(&path, + "/local/domain/0/device-model/%u/parameter", domid) == -1) { + fprintf(logfile, "out of memory reading dm command parameter\n"); + goto out; + } + par = xs_read(xsh, XBT_NULL, path, &len); + if (!par) + goto out; + if (delete_disk_snapshots(par) == 0) + xenstore_record_dm_state("snapshot-deleted"); + free(par); } else if (!strncmp(command, "continue", len)) { fprintf(logfile, "dm-command: continue after state save\n"); xen_pause_requested = 0; Index: xen-3.3.1-testing/tools/ioemu-remote/xen-vl-extra.c =================================================================== --- xen-3.3.1-testing.orig/tools/ioemu-remote/xen-vl-extra.c +++ xen-3.3.1-testing/tools/ioemu-remote/xen-vl-extra.c @@ -16,6 +16,8 @@ static int qemu_savevm_state(QEMUFile *f static int qemu_loadvm_state(QEMUFile *f); static int bdrv_can_snapshot(BlockDriverState *bs); +static int bdrv_has_snapshot(BlockDriverState *bs); +static BlockDriverState *get_bs_snapshots(void); static int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info, const char *name); @@ -171,6 +173,35 @@ the_end: return ret; } +int delete_disk_snapshots(const char* name) +{ + BlockDriverState *bs, *bs1; + int i, ret; + + bs = get_bs_snapshots(); + if (!bs) { + xenstore_record_dm_error("No block device supports snapshots"); + return -1; + } + + for(i = 0; i <= nb_drives; i++) { + bs1 = drives_table[i].bdrv; + if (bdrv_has_snapshot(bs1)) { + ret = bdrv_snapshot_delete(bs1, name); + if (ret < 0) { + if (ret == -ENOTSUP) + fprintf(stderr, "Snapshots not supported on device '%s'\n", + bdrv_get_device_name(bs1)); + else + fprintf(stderr, "Error %d while deleting snapshot on " + "'%s'\n", ret, bdrv_get_device_name(bs1)); + } + } + } + + return 0; +} + struct qemu_alarm_timer; static int unix_start_timer(struct qemu_alarm_timer *t) { return 0; } static void unix_stop_timer(struct qemu_alarm_timer *t) { } Index: xen-3.3.1-testing/tools/ioemu-remote/qemu-xen.h =================================================================== --- xen-3.3.1-testing.orig/tools/ioemu-remote/qemu-xen.h +++ xen-3.3.1-testing/tools/ioemu-remote/qemu-xen.h @@ -22,6 +22,7 @@ enum { /* xen-vl-extra.c */ int save_disk_snapshots(const char* name); +int delete_disk_snapshots(const char* name); /* helper2.c */ extern long time_offset;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor