X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=diskutil.c;h=dca37483fa96a2401c0e49cffc4909659e79ccf0;hp=a1077d4001459a159c37076478fa4e04f882ecc8;hb=f52e919826839eaba90903b67fe02042159a0023;hpb=c1f9846dca7df2bfd37f0279092a5887913bf342 diff --git a/diskutil.c b/diskutil.c index a1077d40..dca37483 100644 --- a/diskutil.c +++ b/diskutil.c @@ -18,8 +18,6 @@ static struct disk_util *last_du; static struct fio_mutex *disk_util_mutex; -FLIST_HEAD(disk_list); - static struct disk_util *__init_per_file_disk_util(struct thread_data *td, int majdev, int mindev, char *path); @@ -37,6 +35,7 @@ static void disk_util_free(struct disk_util *du) } fio_mutex_remove(du->lock); + free(du->sysfs_root); sfree(du); } @@ -292,10 +291,8 @@ static struct disk_util *disk_util_add(struct thread_data *td, int majdev, dprint(FD_DISKUTIL, "add maj/min %d/%d: %s\n", majdev, mindev, path); du = smalloc(sizeof(*du)); - if (!du) { - log_err("fio: smalloc() pool exhausted\n"); + if (!du) return NULL; - } memset(du, 0, sizeof(*du)); INIT_FLIST_HEAD(&du->list); @@ -307,7 +304,7 @@ static struct disk_util *disk_util_add(struct thread_data *td, int majdev, return NULL; } strncpy((char *) du->dus.name, basename(path), FIO_DU_NAME_SZ - 1); - du->sysfs_root = path; + du->sysfs_root = strdup(path); du->major = majdev; du->minor = mindev; INIT_FLIST_HEAD(&du->slavelist); @@ -432,9 +429,6 @@ static struct disk_util *__init_per_file_disk_util(struct thread_data *td, sprintf(path, "%s", tmp); } - if (td->o.ioscheduler && !td->sysfs_root) - td->sysfs_root = strdup(path); - return disk_util_add(td, majdev, mindev, path); } @@ -453,12 +447,8 @@ static struct disk_util *init_per_file_disk_util(struct thread_data *td, mindev); du = disk_util_exists(majdev, mindev); - if (du) { - if (td->o.ioscheduler && !td->sysfs_root) - td->sysfs_root = strdup(du->sysfs_root); - + if (du) return du; - } /* * for an fs without a device, we will repeatedly stat through @@ -491,7 +481,7 @@ void init_disk_util(struct thread_data *td) unsigned int i; if (!td->o.do_disk_util || - (td->io_ops->flags & (FIO_DISKLESSIO | FIO_NODISKUTIL))) + td_ioengine_flagged(td, FIO_DISKLESSIO | FIO_NODISKUTIL)) return; for_each_file(td, f, i)