mirror of
https://github.com/qemu/qemu.git
synced 2024-11-27 05:43:47 +08:00
block: Convert first_drv to QLIST
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
85de0ba5e9
commit
8a22f02a88
22
block.c
22
block.c
@ -58,7 +58,8 @@ static int bdrv_write_em(BlockDriverState *bs, int64_t sector_num,
|
||||
static QTAILQ_HEAD(, BlockDriverState) bdrv_states =
|
||||
QTAILQ_HEAD_INITIALIZER(bdrv_states);
|
||||
|
||||
static BlockDriver *first_drv;
|
||||
static QLIST_HEAD(, BlockDriver) bdrv_drivers =
|
||||
QLIST_HEAD_INITIALIZER(bdrv_drivers);
|
||||
|
||||
/* If non-zero, use only whitelisted block drivers */
|
||||
static int use_bdrv_whitelist;
|
||||
@ -142,8 +143,7 @@ void bdrv_register(BlockDriver *bdrv)
|
||||
if (!bdrv->bdrv_aio_flush)
|
||||
bdrv->bdrv_aio_flush = bdrv_aio_flush_em;
|
||||
|
||||
bdrv->next = first_drv;
|
||||
first_drv = bdrv;
|
||||
QLIST_INSERT_HEAD(&bdrv_drivers, bdrv, list);
|
||||
}
|
||||
|
||||
/* create a new block device (by default it is empty) */
|
||||
@ -162,9 +162,10 @@ BlockDriverState *bdrv_new(const char *device_name)
|
||||
BlockDriver *bdrv_find_format(const char *format_name)
|
||||
{
|
||||
BlockDriver *drv1;
|
||||
for(drv1 = first_drv; drv1 != NULL; drv1 = drv1->next) {
|
||||
if (!strcmp(drv1->format_name, format_name))
|
||||
QLIST_FOREACH(drv1, &bdrv_drivers, list) {
|
||||
if (!strcmp(drv1->format_name, format_name)) {
|
||||
return drv1;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@ -265,10 +266,11 @@ static BlockDriver *find_protocol(const char *filename)
|
||||
len = sizeof(protocol) - 1;
|
||||
memcpy(protocol, filename, len);
|
||||
protocol[len] = '\0';
|
||||
for(drv1 = first_drv; drv1 != NULL; drv1 = drv1->next) {
|
||||
QLIST_FOREACH(drv1, &bdrv_drivers, list) {
|
||||
if (drv1->protocol_name &&
|
||||
!strcmp(drv1->protocol_name, protocol))
|
||||
!strcmp(drv1->protocol_name, protocol)) {
|
||||
return drv1;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@ -282,7 +284,7 @@ static BlockDriver *find_hdev_driver(const char *filename)
|
||||
int score_max = 0, score;
|
||||
BlockDriver *drv = NULL, *d;
|
||||
|
||||
for (d = first_drv; d; d = d->next) {
|
||||
QLIST_FOREACH(d, &bdrv_drivers, list) {
|
||||
if (d->bdrv_probe_device) {
|
||||
score = d->bdrv_probe_device(filename);
|
||||
if (score > score_max) {
|
||||
@ -317,7 +319,7 @@ static BlockDriver *find_image_format(const char *filename)
|
||||
}
|
||||
|
||||
score_max = 0;
|
||||
for(drv1 = first_drv; drv1 != NULL; drv1 = drv1->next) {
|
||||
QLIST_FOREACH(drv1, &bdrv_drivers, list) {
|
||||
if (drv1->bdrv_probe) {
|
||||
score = drv1->bdrv_probe(buf, ret, filename);
|
||||
if (score > score_max) {
|
||||
@ -1157,7 +1159,7 @@ void bdrv_iterate_format(void (*it)(void *opaque, const char *name),
|
||||
{
|
||||
BlockDriver *drv;
|
||||
|
||||
for (drv = first_drv; drv != NULL; drv = drv->next) {
|
||||
QLIST_FOREACH(drv, &bdrv_drivers, list) {
|
||||
it(opaque, drv->format_name);
|
||||
}
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ struct BlockDriver {
|
||||
/* Set if newly created images are not guaranteed to contain only zeros */
|
||||
int no_zero_init;
|
||||
|
||||
struct BlockDriver *next;
|
||||
QLIST_ENTRY(BlockDriver) list;
|
||||
};
|
||||
|
||||
struct BlockDriverState {
|
||||
|
Loading…
Reference in New Issue
Block a user