linux_dsm_epyc7002/drivers/md
Artur Paszkiewicz 41d2d848e5 md: improve io stats accounting
Use generic io accounting functions to manage io stats. There was an
attempt to do this earlier in commit 18c0b223cf ("md: use generic io
stats accounting functions to simplify io stat accounting"), but it did
not include a call to generic_end_io_acct() and caused issues with
tracking in-flight IOs, so it was later removed in commit 74672d069b
("md: fix md io stats accounting broken").

This patch attempts to fix this by using both disk_start_io_acct() and
disk_end_io_acct(). To make it possible, a struct md_io is allocated for
every new md bio, which includes the io start_time. A new mempool is
introduced for this purpose. We override bio->bi_end_io with our own
callback and call disk_start_io_acct() before passing the bio to
md_handle_request(). When it completes, we call disk_end_io_acct() and
the original bi_end_io callback.

This adds correct statistics about in-flight IOs and IO processing time,
interpreted e.g. in iostat as await, svctm, aqu-sz and %util.

It also fixes a situation where too many IOs where reported if a bio was
re-submitted to the mddev, because io accounting is now performed only
on newly arriving bios.

Acked-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
2020-07-13 23:06:56 -07:00
..
bcache block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
persistent-data
dm-bio-prison-v1.c
dm-bio-prison-v1.h
dm-bio-prison-v2.c
dm-bio-prison-v2.h
dm-bio-record.h
dm-bufio.c
dm-builtin.c
dm-cache-background-tracker.c
dm-cache-background-tracker.h
dm-cache-block-types.h
dm-cache-metadata.c
dm-cache-metadata.h
dm-cache-policy-internal.h
dm-cache-policy-smq.c
dm-cache-policy.c
dm-cache-policy.h
dm-cache-target.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-clone-metadata.c
dm-clone-metadata.h
dm-clone-target.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-core.h
dm-crypt.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-delay.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-dust.c
dm-ebs-target.c
dm-era-target.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-exception-store.c
dm-exception-store.h
dm-flakey.c
dm-historical-service-time.c
dm-init.c
dm-integrity.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-io.c
dm-ioctl.c dm ioctl: use struct_size() helper in retrieve_deps() 2020-06-17 12:31:45 -04:00
dm-kcopyd.c
dm-linear.c
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log-writes.c
dm-log.c
dm-mpath.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid1.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-raid.c
dm-region-hash.c
dm-round-robin.c
dm-rq.c blk-mq: move failure injection out of blk_mq_complete_request 2020-06-24 09:15:57 -06:00
dm-rq.h
dm-service-time.c
dm-snap-persistent.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-snap-transient.c
dm-snap.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-stats.c
dm-stats.h
dm-stripe.c
dm-switch.c
dm-sysfs.c
dm-table.c
dm-target.c
dm-thin-metadata.c
dm-thin-metadata.h
dm-thin.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-uevent.c
dm-uevent.h
dm-unstripe.c
dm-verity-fec.c
dm-verity-fec.h
dm-verity-target.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
dm-verity-verify-sig.c
dm-verity-verify-sig.h
dm-verity.h
dm-writecache.c Linux 5.8-rc4 2020-07-08 08:02:13 -06:00
dm-zero.c
dm-zoned-metadata.c dm zoned: Fix reclaim zone selection 2020-06-19 12:29:39 -04:00
dm-zoned-reclaim.c dm zoned: fix uninitialized pointer dereference 2020-06-17 12:13:08 -04:00
dm-zoned-target.c Linux 5.8-rc4 2020-07-08 08:02:13 -06:00
dm-zoned.h
dm.c Linux 5.8-rc4 2020-07-08 08:02:13 -06:00
dm.h
Kconfig
Makefile
md-bitmap.c
md-bitmap.h
md-cluster.c
md-cluster.h
md-faulty.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
md-linear.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
md-linear.h
md-multipath.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
md-multipath.h
md.c md: improve io stats accounting 2020-07-13 23:06:56 -07:00
md.h md: improve io stats accounting 2020-07-13 23:06:56 -07:00
raid0.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
raid0.h
raid1-10.c
raid1.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
raid1.h
raid5-cache.c
raid5-log.h
raid5-ppl.c
raid5.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
raid5.h
raid10.c block: rename generic_make_request to submit_bio_noacct 2020-07-01 07:27:24 -06:00
raid10.h