qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] GSoC project idea: iSCSI target in QEMU


From: Stefan Hajnoczi
Subject: [Qemu-devel] GSoC project idea: iSCSI target in QEMU
Date: Thu, 15 Feb 2018 10:31:02 +0000

There is currently no way to test the block/iscsi.c block driver.
Using a third-party iSCSI target isn't sufficient since we need fault
injection and control over I/O request execution in order to exercise
specific code paths in the initiator.

Are you willing to co-mentor a Google Summer of Code project to
implement an iSCSI target in QEMU?

There are two goals:
1. Runtime iSCSI target QMP commands to start/stop and add/remove LUNs.
2. qemu-iscsi wrapper program for easy command-line launching.

I think iSCSI target functionality will be useful beyond testing.  It
will make it possible to attach disk images to physical machines or
VMs using a widely implemented protocol.

QEMU already has blkdebug for fault injection and a SCSI target.
We're just missing the iSCSI wire protocol that wraps SCSI CDBs.  The
basic idea is to implement a runtime iSCSI server (similar to the NBD
server) that speaks the iSCSI protocol and passes SCSI requests to
QEMU's SCSI target.

I briefly looked at include/hw/scsi/scsi.h to check if this is
feasible.  It looks like it's possible to instantiate a SCSIBus
without a parent DeviceState.  The SCSI target is tied to device
emulation since every LUN is a SCSIDevice and it's also tied to live
migration.  But I don't think these things prevent iSCSI from reusing
this code.

The next step is to look at the iSCSI RFC to determine how feasible
this would be:
https://tools.ietf.org/html/rfc7143

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]