projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't grab stat mutex for final stat output
[fio.git]
/
stat.c
diff --git
a/stat.c
b/stat.c
index 979c8100d37881fa2a99ee1c184e504b656e6b7c..89d719468cd91aed185a3491e08cb1a1fe7d8313 100644
(file)
--- a/
stat.c
+++ b/
stat.c
@@
-1169,7
+1169,7
@@
void init_thread_stat(struct thread_stat *ts)
ts->groupid = -1;
}
ts->groupid = -1;
}
-
static
void __show_run_stats(void)
+void __show_run_stats(void)
{
struct group_run_stats *runstats, *rs;
struct thread_data *td;
{
struct group_run_stats *runstats, *rs;
struct thread_data *td;
@@
-1411,13
+1411,15
@@
void show_run_stats(void)
fio_mutex_up(stat_mutex);
}
fio_mutex_up(stat_mutex);
}
-static void *__show_running_run_stats(void
fio_unused
*arg)
+static void *__show_running_run_stats(void *arg)
{
struct thread_data *td;
unsigned long long *rt;
struct timeval tv;
int i;
{
struct thread_data *td;
unsigned long long *rt;
struct timeval tv;
int i;
+ fio_mutex_down(stat_mutex);
+
rt = malloc(thread_number * sizeof(unsigned long long));
fio_gettime(&tv, NULL);
rt = malloc(thread_number * sizeof(unsigned long long));
fio_gettime(&tv, NULL);
@@
-1458,6
+1460,7
@@
static void *__show_running_run_stats(void fio_unused *arg)
free(rt);
fio_mutex_up(stat_mutex);
free(rt);
fio_mutex_up(stat_mutex);
+ free(arg);
return NULL;
}
return NULL;
}
@@
-1468,21
+1471,23
@@
static void *__show_running_run_stats(void fio_unused *arg)
*/
void show_running_run_stats(void)
{
*/
void show_running_run_stats(void)
{
- pthread_t thread;
+ pthread_t
*
thread;
- fio_mutex_down(stat_mutex);
+ thread = calloc(1, sizeof(*thread));
+ if (!thread)
+ return;
- if (!pthread_create(
&thread, NULL, __show_running_run_stats, NULL
)) {
+ if (!pthread_create(
thread, NULL, __show_running_run_stats, thread
)) {
int err;
int err;
- err = pthread_detach(thread);
+ err = pthread_detach(
*
thread);
if (err)
log_err("fio: DU thread detach failed: %s\n", strerror(err));
return;
}
if (err)
log_err("fio: DU thread detach failed: %s\n", strerror(err));
return;
}
- f
io_mutex_up(stat_mutex
);
+ f
ree(thread
);
}
static int status_interval_init;
}
static int status_interval_init;