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. Changes since v1: - dropped the "virtio: Error object based virtio_error()" patch - see patches for detailed changes -- Greg --- Greg Kurz (4): fsdev: don't allow unknown format in marshal/unmarshal 9pfs: drop pdu_push_and_notify() virtio-9p: factor out virtio_9p_error_err() 9pfs: handle broken transport fsdev/9p-iov-marshal.c | 4 ++- hw/9pfs/9p.c | 52 ++++++++++++++++++++++++++++++++------------ hw/9pfs/9p.h | 1 + hw/9pfs/virtio-9p-device.c | 51 +++++++++++++++++++++++++++++-------------- 4 files changed, 75 insertions(+), 33 deletions(-)