From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LhkTg-0002fv-Kp for qemu-devel@nongnu.org; Thu, 12 Mar 2009 08:57:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LhkTe-0002dz-KT for qemu-devel@nongnu.org; Thu, 12 Mar 2009 08:57:35 -0400 Received: from [199.232.76.173] (port=52758 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LhkTb-0002dQ-2f for qemu-devel@nongnu.org; Thu, 12 Mar 2009 08:57:32 -0400 Received: from mx2.redhat.com ([66.187.237.31]:38729) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LhkTa-0003C5-Dc for qemu-devel@nongnu.org; Thu, 12 Mar 2009 08:57:30 -0400 From: Avi Kivity Date: Thu, 12 Mar 2009 14:57:08 +0200 Message-Id: <1236862631-22918-1-git-send-email-avi@redhat.com> Subject: [Qemu-devel] [PATCH 0/3] Remove ->bdrv_pread() internal block layer API (v2) Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org The internal block layer API has a wart in the form of the ->bdrv_pread() and ->bdrv_pwrite() methods. These duplicate bdrv_read() and bdrv_write(), and are unnatural for a block device in that they are not sector oriented. One of the reasons for their existence is the scsi-generic host support. That is also a wart, as scsi-generic is really a packet (command/response) rather than a block (random access to sectors) API. There is also the wierd negative sector count == byte count thing. This patchset addresses these warts by adding a new API for scsi-generic and dropping ->bdrv_pread() and bdrv_pwrite(). While the improvement falls short of spectacular, it does make further hacking on the block layer easier as there are fewer callbacks to worry about. --- Changes since v1: - rebased against trunk - performance testing: tested 'rm -rf *; tar xjf ../linux-2.6.22.tar.bz2' with a vm snapshot. While there are significant variances among runs (15-25sec), likely due to different ext3 allocation decisions and different host caching decisions, there seems to be no regression due to this patchset. Avi Kivity (3): Add specialized block driver scsi generic API Add internal scsi generic block API Drop internal bdrv_pread()/bdrv_pwrite() APIs block-raw-posix.c | 50 ++++++++++++++++++++++++-- block-raw-win32.c | 20 ++++++---- block.c | 101 +++++++++++++++-------------------------------------- block.h | 8 ++++ block_int.h | 14 +++++-- hw/scsi-generic.c | 39 +++++++++++--------- 6 files changed, 126 insertions(+), 106 deletions(-)