Introduce enum fio_q_status
[fio.git] / engines / sg.c
index 3d927eab857b092ed4950b7e13b7833c342c2a8e..56e5d18ab60ba90edb05b69c079fae70a2fdc104 100644 (file)
@@ -236,8 +236,9 @@ re_read:
        return r;
 }
 
-static int fio_sgio_ioctl_doio(struct thread_data *td,
-                              struct fio_file *f, struct io_u *io_u)
+static enum fio_q_status
+fio_sgio_ioctl_doio(struct thread_data *td, struct fio_file *f,
+                   struct io_u *io_u)
 {
        struct sgio_data *sd = td->io_ops_data;
        struct sg_io_hdr *hdr = &io_u->hdr;
@@ -287,11 +288,11 @@ static int fio_sgio_doio(struct thread_data *td, struct io_u *io_u, int do_sync)
 
        if (f->filetype == FIO_TYPE_BLOCK) {
                ret = fio_sgio_ioctl_doio(td, f, io_u);
-               td->error = io_u->error;
+               td_verror(td, io_u->error, __func__);
        } else {
                ret = fio_sgio_rw_doio(f, io_u, do_sync);
                if (do_sync)
-                       td->error = io_u->error;
+                       td_verror(td, io_u->error, __func__);
        }
 
        return ret;
@@ -377,7 +378,8 @@ static int fio_sgio_prep(struct thread_data *td, struct io_u *io_u)
        return 0;
 }
 
-static int fio_sgio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status
+fio_sgio_queue(struct thread_data *td, struct io_u *io_u)
 {
        struct sg_io_hdr *hdr = &io_u->hdr;
        int ret, do_sync = 0;
@@ -455,8 +457,10 @@ static int fio_sgio_read_capacity(struct thread_data *td, unsigned int *bs,
                return ret;
        }
 
-       *bs      = (buf[4] << 24) | (buf[5] << 16) | (buf[6] << 8) | buf[7];
-       *max_lba = ((buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]) & MAX_10B_LBA;  // for some reason max_lba is being sign extended even though unsigned.
+       *bs      = ((unsigned long) buf[4] << 24) | ((unsigned long) buf[5] << 16) |
+                  ((unsigned long) buf[6] << 8) | (unsigned long) buf[7];
+       *max_lba = ((unsigned long) buf[0] << 24) | ((unsigned long) buf[1] << 16) |
+                  ((unsigned long) buf[2] << 8) | (unsigned long) buf[3];
 
        /*
         * If max lba masked by MAX_10B_LBA equals MAX_10B_LBA,