windows: handle ERROR_NOT_READY
authorJens Axboe <axboe@kernel.dk>
Tue, 11 Sep 2018 22:29:25 +0000 (16:29 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 11 Sep 2018 22:29:25 +0000 (16:29 -0600)
The windows-to-posix error translation doesn't include
ERROR_NOT_READY, add that.

Also add a default case that catches if we don't know what
an error is, and return EIO. That seems much safer than just
returning the Windows error directly, since the caller expects
an errno.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
os/windows/posix.c

index d33250d..3285ce5 100644 (file)
@@ -55,6 +55,7 @@ int win_to_posix_error(DWORD winerr)
        case ERROR_NOT_SAME_DEVICE:             return EXDEV;
        case ERROR_WRITE_PROTECT:               return EROFS;
        case ERROR_BAD_UNIT:                    return ENODEV;
+       case ERROR_NOT_READY:                   return EAGAIN;
        case ERROR_SHARING_VIOLATION:   return EACCES;
        case ERROR_LOCK_VIOLATION:              return EACCES;
        case ERROR_SHARING_BUFFER_EXCEEDED:     return ENOLCK;
@@ -110,6 +111,9 @@ int win_to_posix_error(DWORD winerr)
        case ERROR_DISK_FULL:                   return ENOSPC;
        case ERROR_NOACCESS:                    return EFAULT;
        case ERROR_FILE_INVALID:                return ENXIO;
+       default:
+               log_err("fio: windows error %d not handled\n", winerr);
+               return EIO;
        }
 
        return winerr;