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);
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;
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);
}
}