Re: [PATCH 2/2] [block]: Skip refresh_total_sectors() for scsi-generic devices
On Sat, May 15, 2010 at 06:30:59AM -0700, Nicholas A. Bellinger wrote: From: Nicholas Bellinger n...@linux-iscsi.org This patch adds a BlockDriverState-sg check in block.c:bdrv_common_open() to skip the new refresh_total_sectors() call once we know we are working with a scsi-generic device. We go ahead and skip this call for scsi-generic devices because block/raw-posix.c:raw_getlength() - lseek() will return -ESPIPE. How about moving that check into refresh_total_sectors? -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] [block]: Skip refresh_total_sectors() for scsi-generic devices
On Sun, 2010-05-16 at 15:30 +0200, Christoph Hellwig wrote: On Sat, May 15, 2010 at 06:30:59AM -0700, Nicholas A. Bellinger wrote: From: Nicholas Bellinger n...@linux-iscsi.org This patch adds a BlockDriverState-sg check in block.c:bdrv_common_open() to skip the new refresh_total_sectors() call once we know we are working with a scsi-generic device. We go ahead and skip this call for scsi-generic devices because block/raw-posix.c:raw_getlength() - lseek() will return -ESPIPE. How about moving that check into refresh_total_sectors? Sounds good, attached is updated patch #2: [PATCH 2/2] [block]: Add SG_IO device check in refresh_total_sectors() Also, I am using the options in .vimrc to follow QEMU's indent style: set smartindent set tabstop=4 set shiftwidth=4 set expandtab I assume this is what should be used when sending QEMU patches, yes..? Best, --nab 0002--block-Add-SG_IO-device-check-in-refresh_total_sec.patch Description: application/mbox
[PATCH 2/2] [block]: Skip refresh_total_sectors() for scsi-generic devices
From: Nicholas Bellinger n...@linux-iscsi.org This patch adds a BlockDriverState-sg check in block.c:bdrv_common_open() to skip the new refresh_total_sectors() call once we know we are working with a scsi-generic device. We go ahead and skip this call for scsi-generic devices because block/raw-posix.c:raw_getlength() - lseek() will return -ESPIPE. Signed-off-by: Nicholas A. Bellinger n...@linux-iscsi.org --- block.c | 13 + 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/block.c b/block.c index 02a22f6..1053161 100644 --- a/block.c +++ b/block.c @@ -444,10 +444,15 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename, } bs-keep_read_only = bs-read_only = !(open_flags BDRV_O_RDWR); - -ret = refresh_total_sectors(bs, bs-total_sectors); -if (ret 0) { -goto free_and_fail; +/* + * For scsi-generic devices, do not call refresh_total_sectors() - raw_getlength() + * because lseek() will return -ESPIPE. + */ +if (!(bs-sg)) { + ret = refresh_total_sectors(bs, bs-total_sectors); + if (ret 0) { + goto free_and_fail; + } } #ifndef _WIN32 -- 1.5.6.5 -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html