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 d33250de0f85ab9f0c1ccb6b0df36feb1c805b17..3285ce5849c8eb3b164a9c33edae9928faab21d2 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;