blktrace: port to tracepoints, update
Port to the new tracepoints API: split DEFINE_TRACE() and DECLARE_TRACE() sites. Spread them out to the usage sites, as suggested by Mathieu Desnoyers. Signed-off-by: Ingo Molnar <mingo@elte.hu> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
This commit is contained in:
@@ -32,6 +32,19 @@
|
|||||||
|
|
||||||
#include "blk.h"
|
#include "blk.h"
|
||||||
|
|
||||||
|
DEFINE_TRACE(block_plug);
|
||||||
|
DEFINE_TRACE(block_unplug_io);
|
||||||
|
DEFINE_TRACE(block_unplug_timer);
|
||||||
|
DEFINE_TRACE(block_getrq);
|
||||||
|
DEFINE_TRACE(block_sleeprq);
|
||||||
|
DEFINE_TRACE(block_rq_requeue);
|
||||||
|
DEFINE_TRACE(block_bio_backmerge);
|
||||||
|
DEFINE_TRACE(block_bio_frontmerge);
|
||||||
|
DEFINE_TRACE(block_bio_queue);
|
||||||
|
DEFINE_TRACE(block_rq_complete);
|
||||||
|
DEFINE_TRACE(block_remap); /* Also used in drivers/md/dm.c */
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_remap);
|
||||||
|
|
||||||
static int __make_request(struct request_queue *q, struct bio *bio);
|
static int __make_request(struct request_queue *q, struct bio *bio);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -42,6 +42,8 @@
|
|||||||
static DEFINE_SPINLOCK(elv_list_lock);
|
static DEFINE_SPINLOCK(elv_list_lock);
|
||||||
static LIST_HEAD(elv_list);
|
static LIST_HEAD(elv_list);
|
||||||
|
|
||||||
|
DEFINE_TRACE(block_rq_abort);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Merge hash stuff.
|
* Merge hash stuff.
|
||||||
*/
|
*/
|
||||||
@@ -53,6 +55,9 @@ static const int elv_hash_shift = 6;
|
|||||||
#define rq_hash_key(rq) ((rq)->sector + (rq)->nr_sectors)
|
#define rq_hash_key(rq) ((rq)->sector + (rq)->nr_sectors)
|
||||||
#define ELV_ON_HASH(rq) (!hlist_unhashed(&(rq)->hash))
|
#define ELV_ON_HASH(rq) (!hlist_unhashed(&(rq)->hash))
|
||||||
|
|
||||||
|
DEFINE_TRACE(block_rq_insert);
|
||||||
|
DEFINE_TRACE(block_rq_issue);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Query io scheduler to see if the current process issuing bio may be
|
* Query io scheduler to see if the current process issuing bio may be
|
||||||
* merged with rq.
|
* merged with rq.
|
||||||
|
@@ -52,6 +52,8 @@ struct dm_target_io {
|
|||||||
union map_info info;
|
union map_info info;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
DEFINE_TRACE(block_bio_complete);
|
||||||
|
|
||||||
union map_info *dm_get_mapinfo(struct bio *bio)
|
union map_info *dm_get_mapinfo(struct bio *bio)
|
||||||
{
|
{
|
||||||
if (bio && bio->bi_private)
|
if (bio && bio->bi_private)
|
||||||
|
2
fs/bio.c
2
fs/bio.c
@@ -29,6 +29,8 @@
|
|||||||
#include <trace/block.h>
|
#include <trace/block.h>
|
||||||
#include <scsi/sg.h> /* for struct sg_iovec */
|
#include <scsi/sg.h> /* for struct sg_iovec */
|
||||||
|
|
||||||
|
DEFINE_TRACE(block_split);
|
||||||
|
|
||||||
static struct kmem_cache *bio_slab __read_mostly;
|
static struct kmem_cache *bio_slab __read_mostly;
|
||||||
|
|
||||||
static mempool_t *bio_split_pool __read_mostly;
|
static mempool_t *bio_split_pool __read_mostly;
|
||||||
|
@@ -4,57 +4,73 @@
|
|||||||
#include <linux/blkdev.h>
|
#include <linux/blkdev.h>
|
||||||
#include <linux/tracepoint.h>
|
#include <linux/tracepoint.h>
|
||||||
|
|
||||||
DEFINE_TRACE(block_rq_abort,
|
DECLARE_TRACE(block_rq_abort,
|
||||||
TPPROTO(struct request_queue *q, struct request *rq),
|
TPPROTO(struct request_queue *q, struct request *rq),
|
||||||
TPARGS(q, rq));
|
TPARGS(q, rq));
|
||||||
DEFINE_TRACE(block_rq_insert,
|
|
||||||
|
DECLARE_TRACE(block_rq_insert,
|
||||||
TPPROTO(struct request_queue *q, struct request *rq),
|
TPPROTO(struct request_queue *q, struct request *rq),
|
||||||
TPARGS(q, rq));
|
TPARGS(q, rq));
|
||||||
DEFINE_TRACE(block_rq_issue,
|
|
||||||
|
DECLARE_TRACE(block_rq_issue,
|
||||||
TPPROTO(struct request_queue *q, struct request *rq),
|
TPPROTO(struct request_queue *q, struct request *rq),
|
||||||
TPARGS(q, rq));
|
TPARGS(q, rq));
|
||||||
DEFINE_TRACE(block_rq_requeue,
|
|
||||||
|
DECLARE_TRACE(block_rq_requeue,
|
||||||
TPPROTO(struct request_queue *q, struct request *rq),
|
TPPROTO(struct request_queue *q, struct request *rq),
|
||||||
TPARGS(q, rq));
|
TPARGS(q, rq));
|
||||||
DEFINE_TRACE(block_rq_complete,
|
|
||||||
|
DECLARE_TRACE(block_rq_complete,
|
||||||
TPPROTO(struct request_queue *q, struct request *rq),
|
TPPROTO(struct request_queue *q, struct request *rq),
|
||||||
TPARGS(q, rq));
|
TPARGS(q, rq));
|
||||||
DEFINE_TRACE(block_bio_bounce,
|
|
||||||
|
DECLARE_TRACE(block_bio_bounce,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio),
|
TPPROTO(struct request_queue *q, struct bio *bio),
|
||||||
TPARGS(q, bio));
|
TPARGS(q, bio));
|
||||||
DEFINE_TRACE(block_bio_complete,
|
|
||||||
|
DECLARE_TRACE(block_bio_complete,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio),
|
TPPROTO(struct request_queue *q, struct bio *bio),
|
||||||
TPARGS(q, bio));
|
TPARGS(q, bio));
|
||||||
DEFINE_TRACE(block_bio_backmerge,
|
|
||||||
|
DECLARE_TRACE(block_bio_backmerge,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio),
|
TPPROTO(struct request_queue *q, struct bio *bio),
|
||||||
TPARGS(q, bio));
|
TPARGS(q, bio));
|
||||||
DEFINE_TRACE(block_bio_frontmerge,
|
|
||||||
|
DECLARE_TRACE(block_bio_frontmerge,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio),
|
TPPROTO(struct request_queue *q, struct bio *bio),
|
||||||
TPARGS(q, bio));
|
TPARGS(q, bio));
|
||||||
DEFINE_TRACE(block_bio_queue,
|
|
||||||
|
DECLARE_TRACE(block_bio_queue,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio),
|
TPPROTO(struct request_queue *q, struct bio *bio),
|
||||||
TPARGS(q, bio));
|
TPARGS(q, bio));
|
||||||
DEFINE_TRACE(block_getrq,
|
|
||||||
|
DECLARE_TRACE(block_getrq,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio, int rw),
|
TPPROTO(struct request_queue *q, struct bio *bio, int rw),
|
||||||
TPARGS(q, bio, rw));
|
TPARGS(q, bio, rw));
|
||||||
DEFINE_TRACE(block_sleeprq,
|
|
||||||
|
DECLARE_TRACE(block_sleeprq,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio, int rw),
|
TPPROTO(struct request_queue *q, struct bio *bio, int rw),
|
||||||
TPARGS(q, bio, rw));
|
TPARGS(q, bio, rw));
|
||||||
DEFINE_TRACE(block_plug,
|
|
||||||
|
DECLARE_TRACE(block_plug,
|
||||||
TPPROTO(struct request_queue *q),
|
TPPROTO(struct request_queue *q),
|
||||||
TPARGS(q));
|
TPARGS(q));
|
||||||
DEFINE_TRACE(block_unplug_timer,
|
|
||||||
|
DECLARE_TRACE(block_unplug_timer,
|
||||||
TPPROTO(struct request_queue *q),
|
TPPROTO(struct request_queue *q),
|
||||||
TPARGS(q));
|
TPARGS(q));
|
||||||
DEFINE_TRACE(block_unplug_io,
|
|
||||||
|
DECLARE_TRACE(block_unplug_io,
|
||||||
TPPROTO(struct request_queue *q),
|
TPPROTO(struct request_queue *q),
|
||||||
TPARGS(q));
|
TPARGS(q));
|
||||||
DEFINE_TRACE(block_split,
|
|
||||||
|
DECLARE_TRACE(block_split,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio, unsigned int pdu),
|
TPPROTO(struct request_queue *q, struct bio *bio, unsigned int pdu),
|
||||||
TPARGS(q, bio, pdu));
|
TPARGS(q, bio, pdu));
|
||||||
DEFINE_TRACE(block_remap,
|
|
||||||
|
DECLARE_TRACE(block_remap,
|
||||||
TPPROTO(struct request_queue *q, struct bio *bio, dev_t dev,
|
TPPROTO(struct request_queue *q, struct bio *bio, dev_t dev,
|
||||||
sector_t from, sector_t to),
|
sector_t from, sector_t to),
|
||||||
TPARGS(q, bio, dev, from, to));
|
TPARGS(q, bio, dev, from, to));
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
static mempool_t *page_pool, *isa_page_pool;
|
static mempool_t *page_pool, *isa_page_pool;
|
||||||
|
|
||||||
|
DEFINE_TRACE(block_bio_bounce);
|
||||||
|
|
||||||
#ifdef CONFIG_HIGHMEM
|
#ifdef CONFIG_HIGHMEM
|
||||||
static __init int init_emergency_pool(void)
|
static __init int init_emergency_pool(void)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user