On Thu, May 23, 2013 at 11:38:06AM +0800, Fam Zheng wrote: > @@ -660,9 +651,13 @@ static BlockDriverAIOCB *curl_aio_readv(BlockDriverState > *bs, > static void curl_close(BlockDriverState *bs) > { > BDRVCURLState *s = bs->opaque; > - int i; > > DPRINTF("CURL: Close\n"); > + if (s->timer) { > + qemu_del_timer(s->timer); > + qemu_free_timer(s->timer); > + s->timer = NULL; > + }
This hunk is duplicated, see the next line :-). > @@ -670,16 +665,26 @@ static void curl_close(BlockDriverState *bs) > s->timer = NULL; > } > > - for (i=0; i<CURL_NUM_STATES; i++) { > - if (s->states[i].in_use) > - curl_clean_state(&s->states[i]); > - if (s->states[i].curl) { > - curl_easy_cleanup(s->states[i].curl); > - s->states[i].curl = NULL; > - } > + while (!QLIST_EMPTY(&s->curl_states)) { > + CURLState *state = QLIST_FIRST(&s->curl_states); > + /* Remove and clean curl easy handles */ > + curl_clean_state(state); > + QLIST_REMOVE(state, next); > + g_free(state); > + state = NULL; > } > - if (s->multi) > + > + if (s->multi) { > curl_multi_cleanup(s->multi); > + } > + > + while (!QLIST_EMPTY(&s->acbs)) { > + CURLAIOCB *acb = QLIST_FIRST(&s->acbs); > + acb->common.cb(acb->common.opaque, -EIO); > + QLIST_REMOVE(acb, next); > + qemu_aio_release(acb); > + acb = NULL; > + } Duplicated? See line below. > > while (!QLIST_EMPTY(&s->acbs)) { > CURLAIOCB *acb = QLIST_FIRST(&s->acbs); > @@ -709,6 +714,7 @@ static void curl_close(BlockDriverState *bs) > } > > g_free(s->url); > + s->url = NULL; > } > Can s->url = NULL be merged into a previous patch which adds g_free(s->url)?