Fix wrong time conversion on --status-interval= command line option
[fio.git] / stat.c
diff --git a/stat.c b/stat.c
index e43db8f9d075431a0d90c04b8d4fd941c05ffaf5..f84ce5300f605736b5ef8b9556286792b2b53cd8 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -1232,12 +1232,12 @@ static void __show_run_stats(void)
                        /*
                         * These are per-group shared already
                         */
-                       strncpy(ts->name, td->o.name, FIO_JOBNAME_SIZE);
+                       strncpy(ts->name, td->o.name, FIO_JOBNAME_SIZE - 1);
                        if (td->o.description)
                                strncpy(ts->description, td->o.description,
-                                               FIO_JOBNAME_SIZE);
+                                               FIO_JOBDESC_SIZE - 1);
                        else
-                               memset(ts->description, 0, FIO_JOBNAME_SIZE);
+                               memset(ts->description, 0, FIO_JOBDESC_SIZE);
 
                        /*
                         * If multiple entries in this group, this is
@@ -1479,8 +1479,9 @@ void show_running_run_stats(void)
 
 static int status_interval_init;
 static struct timeval status_time;
+static int status_file_disabled;
 
-#define FIO_STATUS_FILE                "/tmp/fio-dump-status"
+#define FIO_STATUS_FILE                "fio-dump-status"
 
 static int check_status_file(void)
 {
@@ -1488,6 +1489,9 @@ static int check_status_file(void)
        const char *temp_dir;
        char fio_status_file_path[PATH_MAX];
 
+       if (status_file_disabled)
+               return 0;
+
        temp_dir = getenv("TMPDIR");
        if (temp_dir == NULL)
                temp_dir = getenv("TEMP");
@@ -1499,7 +1503,13 @@ static int check_status_file(void)
        if (stat(fio_status_file_path, &sb))
                return 0;
 
-       unlink(fio_status_file_path);
+       if (unlink(fio_status_file_path) < 0) {
+               log_err("fio: failed to unlink %s: %s\n", fio_status_file_path,
+                                                       strerror(errno));
+               log_err("fio: disabling status file updates\n");
+               status_file_disabled = 1;
+       }
+
        return 1;
 }