[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V2 4/4] block: Optionally block drivers to optionall
From: |
Benoît Canet |
Subject: |
[Qemu-devel] [PATCH V2 4/4] block: Optionally block drivers to optionally reopen images after snapshot creation. |
Date: |
Mon, 28 Jan 2013 18:04:40 +0100 |
Protocols like quorum will be able to queue multiple reopens.
Signed-off-by: Benoit Canet <address@hidden>
---
block.c | 25 +++++++++++++++++++++++++
blockdev.c | 5 +++--
include/block/block.h | 2 ++
include/block/block_int.h | 3 +++
4 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/block.c b/block.c
index 843583f..e46a106 100644
--- a/block.c
+++ b/block.c
@@ -4652,3 +4652,28 @@ void bdrv_ext_snapshot_img_create(BlockDriverState
*old_bs,
options, img_size,
flags, errp);
}
+
+int bdrv_ext_snapshot_reopen(BlockDriverState *bs, int bdrv_flags,
+ Error **errp)
+{
+ Error *local_err = NULL;
+ int ret = -ENOTSUP;
+
+ if (!bs->file || !bs->file->drv) {
+ error_setg(errp, "Block driver not reachable.");
+ return ret;
+ }
+
+ if (!bs->file->drv->bdrv_ext_snapshot_reopen) {
+ ret = bdrv_reopen(bs, bdrv_flags, &local_err);
+ } else {
+ ret = bs->file->drv->bdrv_ext_snapshot_reopen(bs, bdrv_flags,
+ &local_err);
+ }
+
+ if (error_is_set(&local_err)) {
+ error_propagate(errp, local_err);
+ }
+
+ return ret;
+}
diff --git a/blockdev.c b/blockdev.c
index b1f388b..e9d235b 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -817,8 +817,9 @@ void qmp_transaction(BlockdevActionList *dev_list, Error
**errp)
/* We don't need (or want) to use the transactional
* bdrv_reopen_multiple() across all the entries at once, because we
* don't want to abort all of them if one of them fails the reopen */
- bdrv_reopen(states->new_bs, states->new_bs->open_flags & ~BDRV_O_RDWR,
- NULL);
+ bdrv_ext_snapshot_reopen(states->new_bs,
+ states->new_bs->open_flags & ~BDRV_O_RDWR,
+ NULL);
}
/* success */
diff --git a/include/block/block.h b/include/block/block.h
index b7be2d2..d7e7334 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -141,6 +141,8 @@ BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue
*bs_queue,
BlockDriverState *bs, int flags);
int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp);
int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error **errp);
+int bdrv_ext_snapshot_reopen(BlockDriverState *bs, int bdrv_flags,
+ Error **errp);
int bdrv_reopen_prepare(BDRVReopenState *reopen_state,
BlockReopenQueue *queue, Error **errp);
void bdrv_reopen_commit(BDRVReopenState *reopen_state);
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 5bab830..996fd9b 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -209,6 +209,9 @@ struct BlockDriver {
const char *base_fmt,
char *options, uint64_t img_size,
int flags, Error **errp);
+ /* optional field */
+ int (*bdrv_ext_snapshot_reopen)(BlockDriverState *bs, int bdrv_flags,
+ Error **errp);
QLIST_ENTRY(BlockDriver) list;
};
--
1.7.10.4
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., (continued)
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Kevin Wolf, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Benoît Canet, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Kevin Wolf, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Benoît Canet, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Kevin Wolf, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Benoît Canet, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Eric Blake, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Benoît Canet, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Kevin Wolf, 2013/01/29
- Re: [Qemu-devel] [PATCH V2 3/4] blockdev: Allow snapshoting of protocols., Benoît Canet, 2013/01/29
[Qemu-devel] [PATCH V2 4/4] block: Optionally block drivers to optionally reopen images after snapshot creation.,
Benoît Canet <=