block-backend: Add blk_set_bs()
It allows changing the BlockDriverState that a BlockBackend points to. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Fam Zheng <famz@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
439db28cf9
commit
a2d6190048
|
@ -238,6 +238,23 @@ BlockDriverState *blk_bs(BlockBackend *blk)
|
||||||
return blk->bs;
|
return blk->bs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Changes the BlockDriverState attached to @blk
|
||||||
|
*/
|
||||||
|
void blk_set_bs(BlockBackend *blk, BlockDriverState *bs)
|
||||||
|
{
|
||||||
|
bdrv_ref(bs);
|
||||||
|
|
||||||
|
if (blk->bs) {
|
||||||
|
blk->bs->blk = NULL;
|
||||||
|
bdrv_unref(blk->bs);
|
||||||
|
}
|
||||||
|
assert(bs->blk == NULL);
|
||||||
|
|
||||||
|
blk->bs = bs;
|
||||||
|
bs->blk = blk;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return @blk's DriveInfo if any, else null.
|
* Return @blk's DriveInfo if any, else null.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -659,6 +659,8 @@ void backup_start(BlockDriverState *bs, BlockDriverState *target,
|
||||||
BlockCompletionFunc *cb, void *opaque,
|
BlockCompletionFunc *cb, void *opaque,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
|
|
||||||
|
void blk_set_bs(BlockBackend *blk, BlockDriverState *bs);
|
||||||
|
|
||||||
void blk_dev_change_media_cb(BlockBackend *blk, bool load);
|
void blk_dev_change_media_cb(BlockBackend *blk, bool load);
|
||||||
bool blk_dev_has_removable_media(BlockBackend *blk);
|
bool blk_dev_has_removable_media(BlockBackend *blk);
|
||||||
void blk_dev_eject_request(BlockBackend *blk, bool force);
|
void blk_dev_eject_request(BlockBackend *blk, bool force);
|
||||||
|
|
Loading…
Reference in New Issue