vhost-user: handle short r/w in vhost-user conns
vhost-user: handle short r/w in vhost-user conns

The underlying sendmsg/recvmsg syscall could be interrupted by signals
and returns bytes less than asked, then methods like
send_header()/recv_header() would return Error::PartialMessage to
callers. This may cause VMM fail to start due to partial read/write.

Fix by retrying send/recv until all data has been transfered. This also
follows what qemu does in qemu's vhost_user code.

Signed-off-by: Eryu Guan <269587f4234b28aff6655a07e628f4841352f404@linux.alibaba.com>

rust-vmm/vhost