diff options
author | Stephen Bates <sbates@raithlin.com> | 2017-04-21 00:29:16 +0300 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-04-21 00:29:16 +0300 |
commit | a37244e4cc5766af68004ad6249fcd0e4694b441 (patch) | |
tree | 6c5cf6437a62483f2be5f5c924fbfecc7b6d3c3d /block/blk-stat.h | |
parent | caf7df12272118e0274c8353bcfeaf60c7743a47 (diff) | |
download | linux-a37244e4cc5766af68004ad6249fcd0e4694b441.tar.xz |
blk-stat: convert blk-stat bucket callback to signed
In order to allow for filtering of IO based on some other properties
of the request than direction we allow the bucket function to return
an int.
If the bucket callback returns a negative do no count it in the stats
accumulation.
Signed-off-by: Stephen Bates <sbates@raithlin.com>
Fixed up Kyber scheduler stat callback.
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-stat.h')
-rw-r--r-- | block/blk-stat.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/block/blk-stat.h b/block/blk-stat.h index 53f08a63bf15..622a62ce6213 100644 --- a/block/blk-stat.h +++ b/block/blk-stat.h @@ -48,9 +48,10 @@ struct blk_stat_callback { /** * @bucket_fn: Given a request, returns which statistics bucket it - * should be accounted under. + * should be accounted under. Return -1 for no bucket for this + * request. */ - unsigned int (*bucket_fn)(const struct request *); + int (*bucket_fn)(const struct request *); /** * @buckets: Number of statistics buckets. @@ -120,7 +121,7 @@ void blk_stat_enable_accounting(struct request_queue *q); * * Return: Data direction of the request, either READ or WRITE. */ -unsigned int blk_stat_rq_ddir(const struct request *rq); +int blk_stat_rq_ddir(const struct request *rq); /** * blk_stat_alloc_callback() - Allocate a block statistics callback. @@ -135,7 +136,7 @@ unsigned int blk_stat_rq_ddir(const struct request *rq); */ struct blk_stat_callback * blk_stat_alloc_callback(void (*timer_fn)(struct blk_stat_callback *), - unsigned int (*bucket_fn)(const struct request *), + int (*bucket_fn)(const struct request *), unsigned int buckets, void *data); /** |