From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> This patch adds a BSG specific qemu_open() call in block/raw.c:raw_open() that saves the opened file descriptor for BSG AIO into BlockDriverState->fd. It also adds the reverse close() call to block/raw.c:raw_close() Signed-off-by: Nicholas A. Bellinger <nab@xxxxxxxxxxxxxxx> --- block/raw.c | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/block/raw.c b/block/raw.c index 4406b8c..7820c78 100644 --- a/block/raw.c +++ b/block/raw.c @@ -5,7 +5,25 @@ static int raw_open(BlockDriverState *bs, int flags) { + int fd, ret; + bs->sg = bs->file->sg; + /* + * scsi-generic and other raw types do not call qemu_open() + */ + if (bs->sg != BDS_BSG) + return 0; + /* + * Obtain a file descriptor for the underlying BSG device for AIO w/ iovecs + */ + fd = qemu_open(bs->filename, flags, 0644); + if (fd < 0) { + ret = -errno; + if (ret == -EROFS) + ret = -EACCES; + return ret; + } + bs->fd = fd; return 0; } @@ -37,6 +55,8 @@ static BlockDriverAIOCB *raw_aio_writev(BlockDriverState *bs, static void raw_close(BlockDriverState *bs) { + if (bs->fd > 0) + close(bs->fd); } static void raw_flush(BlockDriverState *bs) -- 1.5.6.5 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html