[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 21/26] block: Convert first_drv to QLIST
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 21/26] block: Convert first_drv to QLIST |
Date: |
Fri, 23 Apr 2010 17:30:53 +0200 |
From: Stefan Hajnoczi <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 22 ++++++++++++----------
block_int.h | 2 +-
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/block.c b/block.c
index 5d087de..12cf434 100644
--- a/block.c
+++ b/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);
}
}
diff --git a/block_int.h b/block_int.h
index 466a38c..d4067ff 100644
--- a/block_int.h
+++ b/block_int.h
@@ -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 {
--
1.6.6.1
- [Qemu-devel] [PATCH 13/26] qcow2: Fix error return code in qcow2_alloc_cluster_link_l2, (continued)
- [Qemu-devel] [PATCH 13/26] qcow2: Fix error return code in qcow2_alloc_cluster_link_l2, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 10/26] block: get rid of the BDRV_O_FILE flag, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 12/26] qcow2: Return 0/-errno in write_l2_entries, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 07/26] qcow2: Trigger blkdebug events, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 11/26] block: split raw_getlength, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 15/26] qcow2: Return 0/-errno in l2_allocate, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 14/26] qcow2: Return 0/-errno in write_l1_entry, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 17/26] block: Do not export bdrv_first, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 16/26] cleanup block driver option handling in vl.c, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 18/26] block: Convert bdrv_first to QTAILQ, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 21/26] block: Convert first_drv to QLIST,
Kevin Wolf <=
- [Qemu-devel] [PATCH 19/26] Remove un-needed code, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 20/26] block.h: bdrv_create2 doesn't exist any more, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 22/26] qemu-img: Eliminate bdrv_new_open() code duplication, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 23/26] qemu-img: Fix BRDV_O_FLAGS typo, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 24/26] linux-aio: Fix typo in read() EINTR check, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 25/26] qcow2: Use QLIST_FOREACH_SAFE macro, Kevin Wolf, 2010/04/23
- [Qemu-devel] [PATCH 26/26] block: Free iovec arrays allocated by multiwrite_merge(), Kevin Wolf, 2010/04/23
- [Qemu-devel] Re: [PULL 00/26] Block patches, Anthony Liguori, 2010/04/23