From: Linus Torvalds Date: Fri, 8 Feb 2008 17:42:46 +0000 (-0800) Subject: Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block X-Git-Tag: v2.6.25-rc1~41 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=03054de1e0b90b33e9974107d84dabd2509f5898;p=linux-2.6-omap-h63xx.git Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block * 'for-linus' of git://git.kernel.dk/linux-2.6-block: Enhanced partition statistics: documentation update Enhanced partition statistics: remove old partition statistics Enhanced partition statistics: procfs Enhanced partition statistics: sysfs Enhanced partition statistics: aoe fix Enhanced partition statistics: update partition statitics Enhanced partition statistics: core statistics block: fixup rq_init() a bit Manually fixed conflict in drivers/block/aoe/aoecmd.c due to statistics support. --- 03054de1e0b90b33e9974107d84dabd2509f5898 diff --cc drivers/block/aoe/aoecmd.c index 44beb17e809,9e5a37fb36c..d00293ba3b4 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c @@@ -737,31 -519,6 +737,31 @@@ calc_rttavg(struct aoedev *d, int rtt d->rttavg += n >> 2; } +static struct aoetgt * +gettgt(struct aoedev *d, char *addr) +{ + struct aoetgt **t, **e; + + t = d->targets; + e = t + NTARGETS; + for (; t < e && *t; t++) + if (memcmp((*t)->addr, addr, sizeof((*t)->addr)) == 0) + return *t; + return NULL; +} + +static inline void - diskstats(struct gendisk *disk, struct bio *bio, ulong duration) ++diskstats(struct gendisk *disk, struct bio *bio, ulong duration, sector_t sector) +{ + unsigned long n_sect = bio->bi_size >> 9; + const int rw = bio_data_dir(bio); + - disk_stat_inc(disk, ios[rw]); - disk_stat_add(disk, ticks[rw], duration); - disk_stat_add(disk, sectors[rw], n_sect); - disk_stat_add(disk, io_ticks, duration); ++ all_stat_inc(disk, ios[rw], sector); ++ all_stat_add(disk, ticks[rw], duration, sector); ++ all_stat_add(disk, sectors[rw], n_sect, sector); ++ all_stat_add(disk, io_ticks, duration, sector); +} + void aoecmd_ata_rsp(struct sk_buff *skb) { @@@ -878,11 -640,22 +878,11 @@@ } } - 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; - const int rw = bio_data_dir(buf->bio); - - all_stat_inc(disk, ios[rw], buf->sector); - all_stat_add(disk, ticks[rw], duration, buf->sector); - all_stat_add(disk, sectors[rw], n_sect, buf->sector); - all_stat_add(disk, io_ticks, duration, buf->sector); - n = (buf->flags & BUFFL_FAIL) ? -EIO : 0; - bio_endio(buf->bio, n); - mempool_free(buf, d->bufpool); - } + if (buf && --buf->nframesout == 0 && buf->resid == 0) { - diskstats(d->gd, buf->bio, jiffies - buf->stime); ++ diskstats(d->gd, buf->bio, jiffies - buf->stime, buf->sector); + n = (buf->flags & BUFFL_FAIL) ? -EIO : 0; + bio_endio(buf->bio, n); + mempool_free(buf, d->bufpool); } f->buf = NULL;