summaryrefslogtreecommitdiffstats
path: root/qjson.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-05-07 17:25:10 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2015-05-08 14:45:11 +0200
commitca4414804114fd0095b317785bc0b51862e62ebb (patch)
tree1d6900bb9761902a6587149180377aa01e9f23a2 /qjson.c
parentd24697e1824467f3921c84a94f011f43d6466403 (diff)
downloadhqemu-ca4414804114fd0095b317785bc0b51862e62ebb.zip
hqemu-ca4414804114fd0095b317785bc0b51862e62ebb.tar.gz
qemu-nbd: only send a limited number of errno codes on the wire
Right now, NBD includes potentially platform-specific error values in the wire protocol. Luckily, most common error values are more or less universal: in particular, of all errno values <= 34 (up to ERANGE), they are all the same on supported platforms except for 11 (which is EAGAIN on Windows and Linux, but EDEADLK on Darwin and the *BSDs). So, in order to guarantee some portability, only keep a handful of possible error codes and squash everything else to EINVAL. This patch defines a limited set of errno values that are valid for the NBD protocol, and specifies recommendations for what error to return in specific corner cases. The set of errno values is roughly based on the errors listed in the read(2) and write(2) man pages, with some exceptions: - ENOMEM is added for servers that implement copy-on-write or other formats that require dynamic allocation. - EDQUOT is not part of the universal set of errors; it can be changed to ENOSPC on the wire format. - EFBIG is part of the universal set of errors, but it is also changed to ENOSPC because it is pretty similar to ENOSPC or EDQUOT. Incoming values will in general match system errno values, but not on the Hurd which has different errno values (they have a "subsystem code" equal to 0x10 in bits 24-31). The Hurd is probably not something to which QEMU has been ported, but still do the right thing and reverse-map the NBD errno values to the system errno values. The corresponding patch to the NBD protocol description can be found at http://article.gmane.org/gmane.linux.drivers.nbd.general/3154. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'qjson.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud