diff mbox

[2/2,block] : Skip refresh_total_sectors() for scsi-generic devices

Message ID 1273930259-12694-1-git-send-email-nab@linux-iscsi.org (mailing list archive)
State New, archived
Headers show

Commit Message

Nicholas A. Bellinger May 15, 2010, 1:30 p.m. UTC
None
diff mbox

Patch

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