Project

General

Profile

Feature #11329

improved Virtio framework

Added by Joshua M. Clulow about 2 months ago. Updated 8 days ago.

Status:
Closed
Priority:
Normal
Category:
-
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:

Description

We have two drivers for Virtual I/O Device virtual devices today: vioblk, for Virtio block devices; and vioif, for Virtio network devices. Before finalising a third driver (the upcoming vioscsi for Virtio SCSI storage) I decided to do some cleanup of our existing Virtio drivers. At the core of this is a new base Virtio framework which provides support for features we don't currently have; e.g., the use of both indirect and direct descriptor virtqueues.


Related issues

Related to illumos gate - Bug #10005: Cannot Fix pool misconfiguration because other top level device is raidz.Closed2018-11-22

Actions
Related to illumos gate - Bug #10012: vioblk should not accept an all-zero serial numberClosed2018-11-28

Actions
Related to illumos gate - Bug #7366: vioif happily creates rx descriptors until it consumes all memoryClosed2016-09-09

Actions

History

#1

Updated by Joshua M. Clulow about 2 months ago

  • Assignee set to Joshua M. Clulow
#2

Updated by Joshua M. Clulow about 2 months ago

  • Subject changed from improved virtio framework to improved Virtio framework
#3

Updated by Till Wegmüller 17 days ago

  • Related to Bug #10005: Cannot Fix pool misconfiguration because other top level device is raidz. added
#4

Updated by Joshua M. Clulow 16 days ago

  • Description updated (diff)
#5

Updated by Joshua M. Clulow 9 days ago

Testing Notes

Built an OmniOS install ISO with the change rebased on top of illumos-omnios, the OmniOS gate. Was able to install this ISO in a new SmartOS bhyve guest and exercise both networking (iperf3) and storage (iostomp). Leaving running over night to check for leaks or instability. Was able to successfully create a crash dump under iperf and iostomp load, with kmem_flags set to 0xf; confirmed that it was free of related leaks.

I also upgraded my OpenIndiana build VM (on a SmartOS KVM host) using the RTI build bits, and did some basic iperf smoke testing and scrubbed the root ZFS pool (~22GB). Notably this test covers upgrading an existing system and ensuring that the /devices path for the pool has not changed as a result of the driver changes.

Finally, I have tested this several times on Ubuntu 19.04 KVM hosts using virt-manager where everything seems to work correctly as well. I was able to get to gigabit line speed in an iperf test.

#6

Updated by Joshua M. Clulow 9 days ago

  • Related to Bug #10012: vioblk should not accept an all-zero serial number added
#7

Updated by Joshua M. Clulow 9 days ago

  • Related to Bug #7366: vioif happily creates rx descriptors until it consumes all memory added
#8

Updated by Electric Monk 8 days ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

git commit f8296c60994fb27105f37ac6f75661e4a6bdbab7

commit  f8296c60994fb27105f37ac6f75661e4a6bdbab7
Author: Joshua M. Clulow <josh@sysmgr.org>
Date:   2019-08-16T17:37:47.000Z

    11329 improved Virtio framework
    10012 vioblk should not accept an all-zero serial number
    7366 vioif happily creates rx descriptors until it consumes all memory
    Reviewed by: Robert Mustacchi <rm@joyent.com>
    Approved by: Richard Lowe <richlowe@richlowe.net>

Also available in: Atom PDF