X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=diskutil.c;h=4f705c9bb5761a6e302598163cd1d44027d8933c;hp=ac2f006e08597913417d293dbd3a67181fb4c223;hb=b590a7330e0970a5c5cc58ba40542b217af76023;hpb=4744ed623e910289bed0f358ad939e74470d0e64 diff --git a/diskutil.c b/diskutil.c index ac2f006e..4f705c9b 100644 --- a/diskutil.c +++ b/diskutil.c @@ -24,6 +24,14 @@ static void disk_util_free(struct disk_util *du) if (du == last_du) last_du = NULL; + while (!flist_empty(&du->slaves)) { + struct disk_util *slave; + + slave = flist_entry(du->slaves.next, struct disk_util, slavelist); + flist_del(&slave->slavelist); + slave->users--; + } + fio_mutex_remove(du->lock); sfree(du->name); sfree(du); @@ -67,10 +75,10 @@ static void update_io_tick_disk(struct disk_util *du) struct disk_util_stat __dus, *dus, *ldus; struct timeval t; - if (get_io_ticks(du, &__dus)) - return; if (!du->users) return; + if (get_io_ticks(du, &__dus)) + return; dus = &du->dus; ldus = &du->last_dus; @@ -545,7 +553,6 @@ void show_disk_util(void) flist_for_each_safe(entry, next, &disk_list) { flist_del(entry); du = flist_entry(entry, struct disk_util, list); - du->users--; disk_util_free(du); } }