From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50353) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tao0r-0002ar-7p for qemu-devel@nongnu.org; Tue, 20 Nov 2012 08:37:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tao0l-0001jQ-Cr for qemu-devel@nongnu.org; Tue, 20 Nov 2012 08:37:17 -0500 Received: from goliath.siemens.de ([192.35.17.28]:27923) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tao0l-0001jC-3O for qemu-devel@nongnu.org; Tue, 20 Nov 2012 08:37:11 -0500 Message-ID: <50AB8783.5060508@siemens.com> Date: Tue, 20 Nov 2012 14:37:07 +0100 From: Jan Kiszka MIME-Version: 1.0 References: <02a783361c36ed54647b6b34f5c1243c2a94bbe6.1353335052.git.jan.kiszka@siemens.com> <20121120132732.GG27378@stefanha-thinkpad.redhat.com> In-Reply-To: <20121120132732.GG27378@stefanha-thinkpad.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/2] Add AT24Cxx I2C EEPROM device model List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: qemu-devel On 2012-11-20 14:27, Stefan Hajnoczi wrote: > On Mon, Nov 19, 2012 at 03:24:39PM +0100, Jan Kiszka wrote: >> +static void at24_flush_transfer_buffer(AT24State *s) >> +{ >> + if (s->cached_sector < 0 || !s->cache_dirty) { >> + return; >> + } >> + bdrv_write(s->bs, s->cached_sector, s->sector_buffer, 1); > [...] >> +static int at24_cache_sector(AT24State *s, int sector) >> +{ >> + int ret; >> + >> + if (s->cached_sector == sector) { >> + return 0; >> + } >> + ret = bdrv_read(s->bs, sector, s->sector_buffer, 1); > > Can you use bdrv_aio_writev()/bdrv_aio_readv()? We should avoid adding > new synchronous block I/O. Because it forces us to run a nested event > loop that blocks the guest until I/O completes. The call is synchronous as the I2C bus model is as well. How do I model this with bdrv_aio_*? Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux