Commit 9aaf28c6 authored by Max Reitz's avatar Max Reitz Committed by Kevin Wolf
Browse files

block: Remove bdrv_states list



Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 79720af6
Loading
Loading
Loading
Loading
+3 −28
Original line number Diff line number Diff line
@@ -55,8 +55,6 @@

#define NOT_DONE 0x7fffffff /* used while emulated sync operation in progress */

struct BdrvStates bdrv_states = QTAILQ_HEAD_INITIALIZER(bdrv_states);

static QTAILQ_HEAD(, BlockDriverState) graph_bdrv_states =
    QTAILQ_HEAD_INITIALIZER(graph_bdrv_states);

@@ -226,10 +224,7 @@ void bdrv_register(BlockDriver *bdrv)

BlockDriverState *bdrv_new_root(void)
{
    BlockDriverState *bs = bdrv_new();

    QTAILQ_INSERT_TAIL(&bdrv_states, bs, device_list);
    return bs;
    return bdrv_new();
}

BlockDriverState *bdrv_new(void)
@@ -2230,26 +2225,10 @@ void bdrv_close_all(void)
    }
}

/* Note that bs->device_list.tqe_prev is initially null,
 * and gets set to non-null by QTAILQ_INSERT_TAIL().  Establish
 * the useful invariant "bs in bdrv_states iff bs->tqe_prev" by
 * resetting it to null on remove.  */
void bdrv_device_remove(BlockDriverState *bs)
{
    QTAILQ_REMOVE(&bdrv_states, bs, device_list);
    bs->device_list.tqe_prev = NULL;
}

/* make a BlockDriverState anonymous by removing from bdrv_state and
 * graph_bdrv_state list.
   Also, NULL terminate the device_name to prevent double remove */
/* make a BlockDriverState anonymous by removing from graph_bdrv_state list.
 * Also, NULL terminate the device_name to prevent double remove */
void bdrv_make_anon(BlockDriverState *bs)
{
    /* Take care to remove bs from bdrv_states only when it's actually
     * in it. */
    if (bs->device_list.tqe_prev) {
        bdrv_device_remove(bs);
    }
    if (bs->node_name[0] != '\0') {
        QTAILQ_REMOVE(&graph_bdrv_states, bs, node_list);
    }
@@ -2286,10 +2265,6 @@ static void change_parent_backing_link(BlockDriverState *from,
    }
    if (from->blk) {
        blk_set_bs(from->blk, to);
        if (!to->device_list.tqe_prev) {
            QTAILQ_INSERT_BEFORE(from, to, device_list);
        }
        bdrv_device_remove(from);
    }
}

+0 −7
Original line number Diff line number Diff line
@@ -2426,11 +2426,6 @@ void qmp_x_blockdev_remove_medium(const char *device, Error **errp)
        goto out;
    }

    /* This follows the convention established by bdrv_make_anon() */
    if (bs->device_list.tqe_prev) {
        bdrv_device_remove(bs);
    }

    blk_remove_bs(blk);

    if (!blk_dev_has_tray(blk)) {
@@ -2478,8 +2473,6 @@ static void qmp_blockdev_insert_anon_medium(const char *device,

    blk_insert_bs(blk, bs);

    QTAILQ_INSERT_TAIL(&bdrv_states, bs, device_list);

    if (!blk_dev_has_tray(blk)) {
        /* For tray-less devices, blockdev-close-tray is a no-op (or may not be
         * called at all); therefore, the medium needs to be pushed into the
+0 −1
Original line number Diff line number Diff line
@@ -201,7 +201,6 @@ int bdrv_create(BlockDriver *drv, const char* filename,
int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp);
BlockDriverState *bdrv_new_root(void);
BlockDriverState *bdrv_new(void);
void bdrv_device_remove(BlockDriverState *bs);
void bdrv_make_anon(BlockDriverState *bs);
void bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top);
void bdrv_replace_in_backing_chain(BlockDriverState *old,
+0 −4
Original line number Diff line number Diff line
@@ -442,8 +442,6 @@ struct BlockDriverState {
    char node_name[32];
    /* element of the list of named nodes building the graph */
    QTAILQ_ENTRY(BlockDriverState) node_list;
    /* element of the list of "drives" the guest sees */
    QTAILQ_ENTRY(BlockDriverState) device_list;
    /* element of the list of all BlockDriverStates (all_bdrv_states) */
    QTAILQ_ENTRY(BlockDriverState) bs_list;
    /* element of the list of monitor-owned BDS */
@@ -501,8 +499,6 @@ extern BlockDriver bdrv_file;
extern BlockDriver bdrv_raw;
extern BlockDriver bdrv_qcow2;

extern QTAILQ_HEAD(BdrvStates, BlockDriverState) bdrv_states;

/**
 * bdrv_setup_io_funcs:
 *