block: Make find_image_format() return 'raw' BlockDriver for SG_IO devices

This patch adds a special BlockDriverState->sg check in block.c:find_image_format()
after bdrv_file_open() -> block/raw-posix.c:hdev_open() has been called to determine
if we are dealing with a Linux host scsi-generic device.

The patch then returns the BlockDriver * from bdrv_find_format("raw"), skipping the
subsequent bdrv_read() and rest of find_image_format().

Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Nicholas Bellinger 2010-05-17 09:45:57 -07:00 committed by Kevin Wolf
parent 77be4366ba
commit f8ea0b00e0

View File

@ -329,6 +329,11 @@ static BlockDriver *find_image_format(const char *filename)
ret = bdrv_file_open(&bs, filename, 0);
if (ret < 0)
return NULL;
/* Return the raw BlockDriver * to scsi-generic devices */
if (bs->sg)
return bdrv_find_format("raw");
ret = bdrv_pread(bs, 0, buf, sizeof(buf));
bdrv_delete(bs);
if (ret < 0) {