qemu-devel
[Top][All Lists]
Advanced

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

GSoC introduction: Rust vhost-user-scsi device


From: Gaelan Steele
Subject: GSoC introduction: Rust vhost-user-scsi device
Date: Tue, 18 May 2021 19:10:31 -0700

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



reply via email to

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