Make SH port work for packagers that don't differentiate between SH4 and SH4A
[fio.git] / fio.c
diff --git a/fio.c b/fio.c
index 9e9106d55113b54785993649c38768824e6c755a..9c1bed379df586ba8f3efea187aaaf319ce2d387 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -70,6 +70,8 @@ static pthread_t disk_util_thread;
 static struct flist_head *cgroup_list;
 static char *cgroup_mnt;
 
+unsigned long arch_flags = 0;
+
 struct io_log *agg_io_log[2];
 
 #define TERMINATE_ALL          (-1)
@@ -550,13 +552,14 @@ sync_done:
 
                /*
                 * if we can queue more, do so. but check if there are
-                * completed io_u's first.
+                * completed io_u's first. Note that we can get BUSY even
+                * without IO queued, if the system is resource starved.
                 */
-               full = queue_full(td) || ret == FIO_Q_BUSY;
+               full = queue_full(td) || (ret == FIO_Q_BUSY && td->cur_depth);
                if (full || !td->o.iodepth_batch_complete) {
                        min_events = min(td->o.iodepth_batch_complete,
                                         td->cur_depth);
-                       if (full && !min_events)
+                       if (full && !min_events && td->o.iodepth_batch_complete != 0)
                                min_events = 1;
 
                        do {
@@ -710,13 +713,15 @@ sync_done:
                        break;
 
                /*
-                * See if we need to complete some commands
+                * See if we need to complete some commands. Note that we
+                * can get BUSY even without IO queued, if the system is
+                * resource starved.
                 */
-               full = queue_full(td) || ret == FIO_Q_BUSY;
+               full = queue_full(td) || (ret == FIO_Q_BUSY && td->cur_depth);
                if (full || !td->o.iodepth_batch_complete) {
                        min_evts = min(td->o.iodepth_batch_complete,
                                        td->cur_depth);
-                       if (full && !min_evts)
+                       if (full && !min_evts && td->o.iodepth_batch_complete != 0)
                                min_evts = 1;
 
                        if (__should_check_rate(td, 0) ||
@@ -1687,10 +1692,12 @@ static void run_threads(void)
        fio_unpin_memory();
 }
 
-int main(int argc, char *argv[])
+int main(int argc, char *argv[], char *envp[])
 {
        long ps;
 
+       arch_init(envp);
+
        sinit();
        init_rand(&__fio_rand_state);