Thread (2 messages) 2 messages, 2 authors, 2018-01-09

Re: [PATCH] bcache: fix inaccurate io state for detached bcache devices

From: Coly Li <hidden>
Date: 2018-01-09 02:36:09
Also in: linux-bcache

On 09/01/2018 10:27 AM, tang.junhui@zte.com.cn wrote:
From: Tang Junhui <redacted>

When we run IO in a detached device,  and run iostat to shows IO status,
normally it will show like bellow (Omitted some fields):
Device: ... avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd        ... 15.89     0.53    1.82    0.20    2.23   1.81  52.30
bcache0    ... 15.89   115.42    0.00    0.00    0.00   2.40  69.60
but after IO stopped, there are still very big avgqu-sz and %util 
values as bellow:
Device: ... avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
bcache0   ...      0   5326.32    0.00    0.00    0.00   0.00 100.10

The reason for this issue is that, only generic_start_io_acct() called
and no generic_end_io_acct() called for detached device in
cached_dev_make_request(). See the code:
//start generic_start_io_acct()
generic_start_io_acct(q, rw, bio_sectors(bio), &d->disk->part0);
if (cached_dev_get(dc)) {
	//will callback generic_end_io_acct()
}
else {
	//will not call generic_end_io_acct()
}

This patch calls generic_end_io_acct() in the end of IO for detached
devices, so we can show IO state correctly.

Signed-off-by: Tang Junhui <redacted>
It looks good to me. Reviewed-by: Coly Li [off-list ref]

I also modify the backing device bi_end_io to catch I/O status in my
backing device failure patches, so I am thinking of pick this patch into
my device failure patch set, then Mike does not need to merge the conflict.

Coly Li

[code snipped]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help