Hello all, I'm Gaelan Steele, one of QEMU's Google Summer of Code students this year. My mentor (Sergio Lopez) has asked me to introduce myself and my project here.
As you all may know, QEMU supports virtio-scsi in one of two ways: it can use a built-in C implementation, running in the main QEMU process, or delegate to another implementation over vhost-user. We have an existing proof-of-concept vhost-user-scsi implementation in contrib/ that passes requests through to an iSCSI target, but we don't have such an implementation for a local disk image. My goal is to write one, in Rust. This has a few primary advantages over the existing in-process SCSI implementation: * Security - SCSI is a complex binary protocol - a fairly large attack surface. By moving the SCSI implementation into a separate process in a memory-safe language, we both reduce the risk of bugs in the first place, and make it possible to sandbox the vhost-user-scsi process, reducing the potential impact even if the process is compromised. * Reusability - the plan is for this implementation to live with the rust-vmm project, where it can be used by QEMU but also by any other VMM that speaks vhost-user. * Performance - living in a separate process might allow some optimizations that would be difficult to implement within QEMU proper. My minimum goal is to implement enough of SCSI for the guest to be able to mount a block device read-only; if I have time, I'll also implement write support, add support for forwarding to an iSCSI target, and spend time benchmarking and optimizing the new implementation. We're currently in GSoC's "community bonding period", which I'll use to get acquainted with the community and the rust-vmm codebase, and nail down any toolchain issues. The coding period proper starts June 7 and continues for 10 weeks until August 16. Finally, a bit about me: I'm an undergraduate computer science student at the University of St Andrews, Scotland; physically, I'm at home in the Pacific Northwest USA for the summer. I've been contributing to open source for about a decade now. Thanks for welcoming me into your community! Gaelan Steele