summaryrefslogtreecommitdiffstats
path: root/xlators/features/qemu-block/src/coroutine-synctask.h
diff options
context:
space:
mode:
authorAnand Avati <avati@redhat.com>2013-03-05 14:48:28 -0800
committerAnand Avati <avati@redhat.com>2013-09-03 11:26:26 -0700
commit53e98f11d1f3df30cc013af021464a257949a62d (patch)
tree2841ea3d822918685c85f46cad09e03a3d648490 /xlators/features/qemu-block/src/coroutine-synctask.h
parent0d60175bd684cf6a14f750579d82dbd1ba97fcbc (diff)
features/qemu-block: support for QCOW2 and QED formats
This patch adds support for internals snapshots using QCOW2 and general framework for external snapshots (next patch) with QCOW2 and QED. For internal snapshots, the file must be "initialized" or "formatted" into QCOW2 format, and specify a file size. Snapshots can be created, deleted, and applied ("goto"). e.g: // Format and Initialize sh# setfattr -n trusted.glusterfs.block-format -v qcow2:10GB /mnt/imgfile sh# ls -l /mnt/imgfile -rw-r--r-- 1 root root 10G Jul 18 21:20 imgfile // Create a snapshot sh# setfattr -n trusted.glusterfs.block-snapshot-create -v name1 imgfile // Apply a snapshot sh# setfattr -n trusted.gluterfs.block-snapshot-goto -v name1 imgfile Change-Id: If993e057a9455967ba3fa9dcabb7f74b8b2cf4c3 BUG: 986775 Signed-off-by: Anand Avati <avati@redhat.com> Reviewed-on: http://review.gluster.org/5367 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Brian Foster <bfoster@redhat.com>
Diffstat (limited to 'xlators/features/qemu-block/src/coroutine-synctask.h')
-rw-r--r--xlators/features/qemu-block/src/coroutine-synctask.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/xlators/features/qemu-block/src/coroutine-synctask.h b/xlators/features/qemu-block/src/coroutine-synctask.h
new file mode 100644
index 00000000..0f0aa99c
--- /dev/null
+++ b/xlators/features/qemu-block/src/coroutine-synctask.h
@@ -0,0 +1,51 @@
+/*
+ Copyright (c) 2013 Red Hat, Inc. <http://www.redhat.com>
+ This file is part of GlusterFS.
+
+ This file is licensed to you under your choice of the GNU Lesser
+ General Public License, version 3 or any later version (LGPLv3 or
+ later), or the GNU General Public License, version 2 (GPLv2), in all
+ cases as published by the Free Software Foundation.
+*/
+
+#ifndef __COROUTINE_SYNCTASK_H
+#define __COROUTINE_SYNCTASK_H
+
+#include "syncop.h"
+#include "block/coroutine_int.h"
+#include "qemu-common.h"
+#include "block/coroutine_int.h"
+
+/*
+ Three entities:
+
+ synctask - glusterfs implementation of xlator friendly lightweight threads
+ Coroutine - qemu coroutine API for its block drivers
+ CoroutineSynctask - implementation of Coroutine using synctasks
+
+ Coroutine is an "embedded" structure inside CoroutineSynctask, called "base".
+
+ E.g:
+
+ Coroutine *co;
+ CoroutineSynctask *cs;
+ struct synctask *synctask;
+
+ cs == synctask->opaque;
+ co == &(cs->base);
+ cs = DO_UPCAST(CoroutineSynctask, base, co);
+ synctask == cs->synctask;
+
+*/
+
+typedef struct {
+ Coroutine base;
+ struct synctask *synctask;
+ CoroutineAction action;
+ bool run;
+ bool die;
+} CoroutineSynctask;
+
+
+
+#endif /* !__COROUTINE_SYNCTASK_H */