X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=diskutil.c;h=a3a5b4dd13d767a6430f0156589afcb27965c953;hb=14ea90edf265aae2b82f25418fde179c452909f9;hp=32616b75848192cadd7412df379709cb72c8ec04;hpb=feb418556a236aa041a625b083d6b99e55d23d74;p=fio.git diff --git a/diskutil.c b/diskutil.c index 32616b75..a3a5b4dd 100644 --- a/diskutil.c +++ b/diskutil.c @@ -132,13 +132,18 @@ static struct disk_util *disk_util_exists(int major, int minor) struct flist_head *entry; struct disk_util *du; + fio_mutex_down(disk_util_mutex); + flist_for_each(entry, &disk_list) { du = flist_entry(entry, struct disk_util, list); - if (major == du->major && minor == du->minor) + if (major == du->major && minor == du->minor) { + fio_mutex_up(disk_util_mutex); return du; + } } + fio_mutex_up(disk_util_mutex); return NULL; } @@ -285,7 +290,7 @@ static struct disk_util *disk_util_add(struct thread_data *td, int majdev, du->minor = mindev; INIT_FLIST_HEAD(&du->slavelist); INIT_FLIST_HEAD(&du->slaves); - du->lock = fio_mutex_init(1); + du->lock = fio_mutex_init(FIO_MUTEX_UNLOCKED); du->users = 0; fio_mutex_down(disk_util_mutex); @@ -308,8 +313,9 @@ static struct disk_util *disk_util_add(struct thread_data *td, int majdev, get_io_ticks(du, &du->last_dus); flist_add_tail(&du->list, &disk_list); - find_add_disk_slaves(td, path, du); fio_mutex_up(disk_util_mutex); + + find_add_disk_slaves(td, path, du); return du; } @@ -618,5 +624,5 @@ void show_disk_util(int terse) void setup_disk_util(void) { - disk_util_mutex = fio_mutex_init(1); + disk_util_mutex = fio_mutex_init(FIO_MUTEX_UNLOCKED); }