From e99ca81de760ab146dbba4105a8691c25cb1dec6 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 1 Oct 2009 19:44:36 +0200 Subject: [PATCH] Really fix dm/md slave disk utilization We should just handle it internally in the disk util inc/dec. Make it iterate each slave and modify their usage count, too. Signed-off-by: Jens Axboe --- diskutil.h | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/diskutil.h b/diskutil.h index 35fd0a59..dc89cc51 100644 --- a/diskutil.h +++ b/diskutil.h @@ -47,22 +47,31 @@ struct disk_util { unsigned long users; }; -static inline void disk_util_inc(struct disk_util *du) +static inline void disk_util_mod(struct disk_util *du, int val) { if (du) { + struct flist_head *n; + fio_mutex_down(du->lock); - du->users++; + du->users += val; + + flist_for_each(n, &du->slavelist) { + struct disk_util *slave; + + slave = flist_entry(n, struct disk_util, slavelist); + slave->users += val; + } fio_mutex_up(du->lock); } } +static inline void disk_util_inc(struct disk_util *du) +{ + disk_util_mod(du, 1); +} static inline void disk_util_dec(struct disk_util *du) { - if (du) { - fio_mutex_down(du->lock); - du->users--; - fio_mutex_up(du->lock); - } + disk_util_mod(du, -1); } #define DISK_UTIL_MSEC (250) -- 2.25.1