From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36713) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZwodY-0006Cg-Tz for qemu-devel@nongnu.org; Thu, 12 Nov 2015 04:57:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZwodV-0006Rh-1s for qemu-devel@nongnu.org; Thu, 12 Nov 2015 04:57:48 -0500 Date: Thu, 12 Nov 2015 17:57:36 +0800 From: Fam Zheng Message-ID: <20151112095736.GS4082@ad.usersys.redhat.com> References: <1446799373-6144-1-git-send-email-pl@kamp.de> <1446799373-6144-4-git-send-email-pl@kamp.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1446799373-6144-4-git-send-email-pl@kamp.de> Subject: Re: [Qemu-devel] [PATCH V3 3/6] ide: add support for IDEBufferedRequest List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Lieven Cc: kwolf@redhat.com, qemu-block@nongnu.org, stefanha@gmail.com, jcody@redhat.com, qemu-devel@nongnu.org, jsnow@redhat.com 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? > + req->iov.iov_len = iov->size; > + qemu_iovec_init_external(&req->qiov, &req->iov, 1); > + > + aioreq = blk_aio_readv(s->blk, sector_num, &req->qiov, nb_sectors, > + ide_buffered_readv_cb, req); > + > + QLIST_INSERT_HEAD(&s->buffered_requests, req, list); > + return aioreq; > +} > + > static void ide_sector_read(IDEState *s); > > static void ide_sector_read_cb(void *opaque, int ret)