The 9p protocol relies on a reliable transport, but the current code treats transport errors (ie, failure to marshal or unmarshal) as if they were coming from the backend. This doesn't make sense: if the transport failed, we should notify the guest that the transport is broken and needs to be reset, using transport specific means.
This series modifies the existing virtio-9p transport so that it can notify the guest about transport failures. The core 9p code is modified as well so that it stops handling requests when the transport fails. --- Greg Kurz (5): virtio: Error object based virtio_error() virtio-9p: factor out virtio_9p_error_err() fsdev: don't allow unknown format in marshal/unmarshal 9pfs: drop pdu_push_and_notify() 9pfs: handle broken transport fsdev/9p-iov-marshal.c | 4 +-- hw/9pfs/9p.c | 43 +++++++++++++++++++++---------- hw/9pfs/9p.h | 1 + hw/9pfs/virtio-9p-device.c | 61 ++++++++++++++++++++++++++++++++------------ hw/virtio/virtio.c | 21 ++++++++++++--- include/hw/virtio/virtio.h | 1 + 6 files changed, 93 insertions(+), 38 deletions(-) -- Greg