Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c6f0e79 authored by Ed L. Cashin's avatar Ed L. Cashin Committed by Greg KH
Browse files

[PATCH] aoe 11/12: add support for disk statistics



add support for disk statistics

Signed-off-by: default avatarEd L. Cashin <ecashin@coraid.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent e3b7df65
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ enum {

struct buf {
	struct list_head bufs;
	ulong start_time;	/* for disk stats */
	ulong flags;
	ulong nframesout;
	char *bufaddr;
+1 −0
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ aoeblk_make_request(request_queue_t *q, struct bio *bio)
	}
	memset(buf, 0, sizeof(*buf));
	INIT_LIST_HEAD(&buf->bufs);
	buf->start_time = jiffies;
	buf->bio = bio;
	buf->resid = bio->bi_size;
	buf->sector = bio->bi_sector;
+14 −0
Original line number Diff line number Diff line
@@ -456,6 +456,20 @@ aoecmd_ata_rsp(struct sk_buff *skb)
	if (buf) {
		buf->nframesout -= 1;
		if (buf->nframesout == 0 && buf->resid == 0) {
			unsigned long duration = jiffies - buf->start_time;
			unsigned long n_sect = buf->bio->bi_size >> 9;
			struct gendisk *disk = d->gd;

			if (bio_data_dir(buf->bio) == WRITE) {
				disk_stat_inc(disk, writes);
				disk_stat_add(disk, write_ticks, duration);
				disk_stat_add(disk, write_sectors, n_sect);
			} else {
				disk_stat_inc(disk, reads);
				disk_stat_add(disk, read_ticks, duration);
				disk_stat_add(disk, read_sectors, n_sect);
			}
			disk_stat_add(disk, io_ticks, duration);
			n = (buf->flags & BUFFL_FAIL) ? -EIO : 0;
			bio_endio(buf->bio, buf->bio->bi_size, n);
			mempool_free(buf, d->bufpool);