block: add bdrv_find_backing_image
Add bdrv_find_backing_image: given a BlockDriverState pointer, and an id, traverse the backing image chain to locate the id. Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
aa398a5c3a
commit
e8a6bb9caa
18
block.c
18
block.c
@ -2595,6 +2595,24 @@ int bdrv_snapshot_load_tmp(BlockDriverState *bs,
|
|||||||
return -ENOTSUP;
|
return -ENOTSUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
|
||||||
|
const char *backing_file)
|
||||||
|
{
|
||||||
|
if (!bs->drv) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bs->backing_hd) {
|
||||||
|
if (strcmp(bs->backing_file, backing_file) == 0) {
|
||||||
|
return bs->backing_hd;
|
||||||
|
} else {
|
||||||
|
return bdrv_find_backing_image(bs->backing_hd, backing_file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#define NB_SUFFIXES 4
|
#define NB_SUFFIXES 4
|
||||||
|
|
||||||
char *get_human_readable_size(char *buf, int buf_size, int64_t size)
|
char *get_human_readable_size(char *buf, int buf_size, int64_t size)
|
||||||
|
2
block.h
2
block.h
@ -148,6 +148,8 @@ int coroutine_fn bdrv_co_writev(BlockDriverState *bs, int64_t sector_num,
|
|||||||
int nb_sectors, QEMUIOVector *qiov);
|
int nb_sectors, QEMUIOVector *qiov);
|
||||||
int coroutine_fn bdrv_co_is_allocated(BlockDriverState *bs, int64_t sector_num,
|
int coroutine_fn bdrv_co_is_allocated(BlockDriverState *bs, int64_t sector_num,
|
||||||
int nb_sectors, int *pnum);
|
int nb_sectors, int *pnum);
|
||||||
|
BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
|
||||||
|
const char *backing_file);
|
||||||
int bdrv_truncate(BlockDriverState *bs, int64_t offset);
|
int bdrv_truncate(BlockDriverState *bs, int64_t offset);
|
||||||
int64_t bdrv_getlength(BlockDriverState *bs);
|
int64_t bdrv_getlength(BlockDriverState *bs);
|
||||||
int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
|
int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
|
||||||
|
Loading…
Reference in New Issue
Block a user