7e7d56d9e0
Convenience function blk_new_with_bs() creates a BlockBackend with its BlockDriverState. Callers have to unref both. The commit after next will relieve them of the need to unref the BlockDriverState. Complication: due to the silly way drive_del works, we need a way to hide a BlockBackend, just like bdrv_make_anon(). To emphasize its "special" status, give the function a suitably off-putting name: blk_hide_on_behalf_of_do_drive_del(). Unfortunately, hiding turns the BlockBackend's name into the empty string. Can't avoid that without breaking the blk->bs->device_name equals blk->name invariant. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
32 lines
799 B
C
32 lines
799 B
C
/*
|
|
* QEMU Block backends
|
|
*
|
|
* Copyright (C) 2014 Red Hat, Inc.
|
|
*
|
|
* Authors:
|
|
* Markus Armbruster <armbru@redhat.com>,
|
|
*
|
|
* This work is licensed under the terms of the GNU LGPL, version 2.1
|
|
* or later. See the COPYING.LIB file in the top-level directory.
|
|
*/
|
|
|
|
#ifndef BLOCK_BACKEND_H
|
|
#define BLOCK_BACKEND_H
|
|
|
|
#include "qemu/typedefs.h"
|
|
#include "qapi/error.h"
|
|
|
|
BlockBackend *blk_new(const char *name, Error **errp);
|
|
BlockBackend *blk_new_with_bs(const char *name, Error **errp);
|
|
void blk_ref(BlockBackend *blk);
|
|
void blk_unref(BlockBackend *blk);
|
|
const char *blk_name(BlockBackend *blk);
|
|
BlockBackend *blk_by_name(const char *name);
|
|
BlockBackend *blk_next(BlockBackend *blk);
|
|
|
|
BlockDriverState *blk_bs(BlockBackend *blk);
|
|
|
|
void blk_hide_on_behalf_of_do_drive_del(BlockBackend *blk);
|
|
|
|
#endif
|