From: Jens Axboe Date: Tue, 13 Mar 2007 11:28:40 +0000 (+0100) Subject: Make disk_util() account for all files X-Git-Tag: fio-1.14~18 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=55bc7fc003004510d2bd19080668fc3fbea517d5;p=fio.git Make disk_util() account for all files Now we can have files all over the place, so we need to loop over td->files[] to setup disk util stats. Signed-off-by: Jens Axboe --- diff --git a/stat.c b/stat.c index 85d55b4c..815e3ae5 100644 --- a/stat.c +++ b/stat.c @@ -241,22 +241,13 @@ static int find_block_dir(dev_t dev, char *path) return found; } -void init_disk_util(struct thread_data *td) +static void __init_disk_util(struct thread_data *td, struct fio_file *f) { - struct fio_file *f; struct stat st; char foo[PATH_MAX], tmp[PATH_MAX]; dev_t dev; char *p; - if (!td->do_disk_util || - (td->io_ops->flags & (FIO_DISKLESSIO | FIO_NODISKUTIL))) - return; - - /* - * Just use the same file, they are on the same device. - */ - f = &td->files[0]; if (!stat(f->file_name, &st)) { if (S_ISBLK(st.st_mode)) dev = st.st_rdev; @@ -311,12 +302,25 @@ void init_disk_util(struct thread_data *td) sprintf(foo, "%s", tmp); } - if (td->ioscheduler) + if (td->ioscheduler && !td->sysfs_root) td->sysfs_root = strdup(foo); disk_util_add(dev, foo); } +void init_disk_util(struct thread_data *td) +{ + struct fio_file *f; + unsigned int i; + + if (!td->do_disk_util || + (td->io_ops->flags & (FIO_DISKLESSIO | FIO_NODISKUTIL))) + return; + + for_each_file(td, f, i) + __init_disk_util(td, f); +} + void disk_util_timer_arm(void) { itimer.it_value.tv_sec = 0;