[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 9/9] block: add bdrv_co_is_allocated() interface
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PATCH v2 9/9] block: add bdrv_co_is_allocated() interface |
Date: |
Mon, 14 Nov 2011 12:44:26 +0000 |
This patch introduces the public bdrv_co_is_allocated() interface which
can be used to query image allocation status while the VM is running.
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
block.c | 37 ++++++++++++++++++++++++-------------
block.h | 2 ++
2 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/block.c b/block.c
index eda5271..0df7eb9 100644
--- a/block.c
+++ b/block.c
@@ -1896,17 +1896,6 @@ typedef struct BdrvCoIsAllocatedData {
bool done;
} BdrvCoIsAllocatedData;
-/* Coroutine wrapper for bdrv_is_allocated() */
-static void coroutine_fn bdrv_is_allocated_co_entry(void *opaque)
-{
- BdrvCoIsAllocatedData *data = opaque;
- BlockDriverState *bs = data->bs;
-
- data->ret = bs->drv->bdrv_co_is_allocated(bs, data->sector_num,
- data->nb_sectors, data->pnum);
- data->done = true;
-}
-
/*
* Returns true iff the specified sector is present in the disk image. Drivers
* not implementing the functionality are assumed to not support backing files,
@@ -1918,8 +1907,8 @@ static void coroutine_fn bdrv_is_allocated_co_entry(void
*opaque)
*
* 'nb_sectors' is the max value 'pnum' should be set to.
*/
-int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors,
- int *pnum)
+int coroutine_fn bdrv_co_is_allocated(BlockDriverState *bs, int64_t sector_num,
+ int nb_sectors, int *pnum)
{
if (!bs->drv->bdrv_co_is_allocated) {
int64_t n;
@@ -1932,6 +1921,28 @@ int bdrv_is_allocated(BlockDriverState *bs, int64_t
sector_num, int nb_sectors,
return 1;
}
+ return bs->drv->bdrv_co_is_allocated(bs, sector_num, nb_sectors, pnum);
+}
+
+/* Coroutine wrapper for bdrv_is_allocated() */
+static void coroutine_fn bdrv_is_allocated_co_entry(void *opaque)
+{
+ BdrvCoIsAllocatedData *data = opaque;
+ BlockDriverState *bs = data->bs;
+
+ data->ret = bdrv_co_is_allocated(bs, data->sector_num, data->nb_sectors,
+ data->pnum);
+ data->done = true;
+}
+
+/*
+ * Synchronous wrapper around bdrv_co_is_allocated().
+ *
+ * See bdrv_co_is_allocated() for details.
+ */
+int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors,
+ int *pnum)
+{
Coroutine *co;
BdrvCoIsAllocatedData data = {
.bs = bs,
diff --git a/block.h b/block.h
index 9d8909b..ad8dd48 100644
--- a/block.h
+++ b/block.h
@@ -143,6 +143,8 @@ int coroutine_fn bdrv_co_readv(BlockDriverState *bs,
int64_t sector_num,
int nb_sectors, QEMUIOVector *qiov);
int coroutine_fn bdrv_co_writev(BlockDriverState *bs, int64_t sector_num,
int nb_sectors, QEMUIOVector *qiov);
+int coroutine_fn bdrv_co_is_allocated(BlockDriverState *bs, int64_t sector_num,
+ int nb_sectors, int *pnum);
int bdrv_truncate(BlockDriverState *bs, int64_t offset);
int64_t bdrv_getlength(BlockDriverState *bs);
int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
--
1.7.7.1
- [Qemu-devel] [PATCH v2 0/9] block: replace .bdrv_is_allocated() with .bdrv_co_is_allocated(), Stefan Hajnoczi, 2011/11/14
- [Qemu-devel] [PATCH v2 3/9] qed: convert to .bdrv_co_is_allocated(), Stefan Hajnoczi, 2011/11/14
- [Qemu-devel] [PATCH v2 2/9] block: add .bdrv_co_is_allocated(), Stefan Hajnoczi, 2011/11/14
- [Qemu-devel] [PATCH v2 9/9] block: add bdrv_co_is_allocated() interface,
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH v2 5/9] vvfat: convert to .bdrv_co_is_allocated(), Stefan Hajnoczi, 2011/11/14
- [Qemu-devel] [PATCH v2 6/9] vdi: convert to .bdrv_co_is_allocated(), Stefan Hajnoczi, 2011/11/14
- [Qemu-devel] [PATCH v2 4/9] block: convert qcow2, qcow2, and vmdk to .bdrv_co_is_allocated(), Stefan Hajnoczi, 2011/11/14
- [Qemu-devel] [PATCH v2 1/9] block: use public bdrv_is_allocated() interface, Stefan Hajnoczi, 2011/11/14
- [Qemu-devel] [PATCH v2 8/9] block: drop .bdrv_is_allocated() interface, Stefan Hajnoczi, 2011/11/14
- [Qemu-devel] [PATCH v2 7/9] cow: convert to .bdrv_co_is_allocated(), Stefan Hajnoczi, 2011/11/14
- Re: [Qemu-devel] [PATCH v2 0/9] block: replace .bdrv_is_allocated() with .bdrv_co_is_allocated(), Kevin Wolf, 2011/11/23