Use clear_error() instead of clearing the error manually
[fio.git] / filesetup.c
index b0a40e572b23996ba6f53996a75eb447d2c6ecde..40a16638f9ea798a9e4b5c0c97c37ee5e691da15 100644 (file)
@@ -244,8 +244,15 @@ int open_files(struct thread_data *td)
 
        for_each_file(td, f, i) {
                err = td_io_open_file(td, f);
-               if (err)
+               if (err) {
+                       if (td->error == EMFILE) {
+                               log_err("fio: limited open files to: %d\n", td->nr_open_files);
+                               td->o.open_files = td->nr_open_files;
+                               err = 0;
+                               clear_error(td);
+                       }
                        break;
+               }
 
                if (td->o.open_files == td->nr_open_files)
                        break;
@@ -269,10 +276,9 @@ static void get_file_sizes(struct thread_data *td)
        unsigned int i;
 
        for_each_file(td, f, i) {
-               if (td->io_ops->open_file(td, f)) {
-                       td->error = 0;
-                       memset(td->verror, 0, sizeof(td->verror));
-               } else
+               if (td->io_ops->open_file(td, f))
+                       clear_error(td);
+               else
                        td->io_ops->close_file(td, f);
        }
 }