Am 12.11.2015 um 10:57 schrieb Fam Zheng:
On Fri, 11/06 09:42, Peter Lieven wrote:+BlockAIOCB *ide_buffered_readv(IDEState *s, int64_t sector_num, + QEMUIOVector *iov, int nb_sectors, + BlockCompletionFunc *cb, void *opaque) +{ + BlockAIOCB *aioreq; + IDEBufferedRequest *req; + int c = 0; + + QLIST_FOREACH(req, &s->buffered_requests, list) { + c++; + } + if (c > MAX_BUFFERED_REQS) { + return blk_abort_aio_request(s->blk, cb, opaque, -EIO); + } + + req = g_new0(IDEBufferedRequest, 1); + req->original_qiov = iov; + req->original_cb = cb; + req->original_opaque = opaque; + req->iov.iov_base = qemu_blockalign(blk_bs(s->blk), iov->size);Where is this bounce buffer freed?
Oops, during conversion form req->buf to req->iov this got lost. It should be freed in ide_buffered_readv_cb. I will respin after you had a look at the other patches as well. Thanks, Peter
