diff options
Diffstat (limited to 'nbd/common.c')
-rw-r--r-- | nbd/common.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/nbd/common.c b/nbd/common.c index 7456021f7e..593904f148 100644 --- a/nbd/common.c +++ b/nbd/common.c @@ -18,6 +18,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" +#include "trace.h" #include "nbd-internal.h" /* Discard length bytes from channel. Return -errno on failure and 0 on @@ -171,3 +172,36 @@ const char *nbd_err_lookup(int err) return "<unknown>"; } } + + +int nbd_errno_to_system_errno(int err) +{ + int ret; + switch (err) { + case NBD_SUCCESS: + ret = 0; + break; + case NBD_EPERM: + ret = EPERM; + break; + case NBD_EIO: + ret = EIO; + break; + case NBD_ENOMEM: + ret = ENOMEM; + break; + case NBD_ENOSPC: + ret = ENOSPC; + break; + case NBD_ESHUTDOWN: + ret = ESHUTDOWN; + break; + default: + trace_nbd_unknown_error(err); + /* fallthrough */ + case NBD_EINVAL: + ret = EINVAL; + break; + } + return ret; +} |