From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51778) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UtfCK-00030A-Vc for qemu-devel@nongnu.org; Mon, 01 Jul 2013 10:35:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UtfCE-0003za-H9 for qemu-devel@nongnu.org; Mon, 01 Jul 2013 10:35:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:20238) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UtfCE-0003zO-9t for qemu-devel@nongnu.org; Mon, 01 Jul 2013 10:35:14 -0400 Date: Mon, 1 Jul 2013 16:35:04 +0200 From: Stefan Hajnoczi Message-ID: <20130701143504.GF20182@stefanha-thinkpad.redhat.com> References: <1372338695-411-1-git-send-email-pl@kamp.de> <1372338695-411-12-git-send-email-pl@kamp.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1372338695-411-12-git-send-email-pl@kamp.de> Subject: Re: [Qemu-devel] [PATCHv2 11/11] iscsi: assert that sectors are aligned to LUN blocksize List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Lieven Cc: kwolf@redhat.com, pbonzini@redhat.com, qemu-devel@nongnu.org, ronniesahlberg@gmail.com On Thu, Jun 27, 2013 at 03:11:35PM +0200, Peter Lieven wrote: > if the blocksize of an iSCSI LUN is bigger than the BDRV_SECTOR_SIZE > it is possible that sector_num or nb_sectors are not correctly > alligned. > > to avoid corruption we fail requests which are misaligned. > > Signed-off-by: Peter Lieven > --- > block/iscsi.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/block/iscsi.c b/block/iscsi.c > index 0567b46..bff2e1f 100644 > --- a/block/iscsi.c > +++ b/block/iscsi.c > @@ -298,6 +298,13 @@ static int64_t sector_lun2qemu(int64_t sector, IscsiLun *iscsilun) > return sector * iscsilun->block_size / BDRV_SECTOR_SIZE; > } > > +static int64_t is_request_lun_aligned(int64_t sector_num, int nb_sectors, > + IscsiLun *iscsilun) > +{ > + return ((sector_num * BDRV_SECTOR_SIZE) % iscsilun->block_size || > + (nb_sectors * BDRV_SECTOR_SIZE) % iscsilun->block_size) ? 0 : 1; > +} When QEMU does geometry probing it reads 2KB. So if the LUN has 4KB block size then QEMU will fail to open it? This would also affect image formats on top of iSCSI LUNs. AFAICT we have no way to passing I/O topology information up from the block driver. Stefan