Commit 4c16a439 authored by Li Ruilin's avatar Li Ruilin Committed by Zheng Zengkai
Browse files

bcache: always record start time of a sample

euleros/rtos inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I4LOJ6


CVE: NA

--------------------------------

Before this patch bypassed I/O request will not record start time,
therefore when calculating latency data, start time will be calculated
wrongly. This patch makes start time always be recorded to fix this.

Signed-off-by: default avatarLi Ruilin <liruilin4@huawei.com>
Reviewed-by: default avatarSong Chao <chao.song@huawei.com>
Acked-by: default avatarXie XiuQi <xiexiuqi@huawei.com>
Signed-off-by: default avatarCheng Jian <cj.chengjian@huawei.com>
Reviewed-by: default avatarGuangxing Deng <dengguangxing@huawei.com>
Reviewed-by: default avatarchao song <chao.song@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 6214e257
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -1252,14 +1252,13 @@ blk_qc_t cached_dev_submit_bio(struct bio *bio)
		} else {
			s->iop.bypass = check_should_bypass(dc, bio);

			if (!s->iop.bypass && bio->bi_iter.bi_size && !rw) {
			s->smp.offset = bio->bi_iter.bi_sector - dc->sb.data_offset;
			s->smp.length = bio->bi_iter.bi_size;
			s->smp.type = rw;
			s->smp.dev = dc->bdev->bd_dev;
			s->smp.start_time = ktime_get_ns();
			if (!s->iop.bypass && bio->bi_iter.bi_size && !rw)
				save_circ_item(&s->smp);
			}

			if (rw)
				cached_dev_write(dc, s);