Commit f4a6a61c authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

blktrace: cleanup the __trace_note_message interface

Pass the cgroup_subsys_state instead of a the blkg so that blktrace
doesn't need to poke into blk-cgroup internals, and give the name a
blk prefix as the current name is way too generic for a public
interface.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarTejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20220420042723.1010598-9-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent dec223c9
...@@ -1102,13 +1102,13 @@ struct bfq_group *bfqq_group(struct bfq_queue *bfqq); ...@@ -1102,13 +1102,13 @@ struct bfq_group *bfqq_group(struct bfq_queue *bfqq);
break; \ break; \
bfq_bfqq_name((bfqq), pid_str, MAX_BFQQ_NAME_LENGTH); \ bfq_bfqq_name((bfqq), pid_str, MAX_BFQQ_NAME_LENGTH); \
blk_add_cgroup_trace_msg((bfqd)->queue, \ blk_add_cgroup_trace_msg((bfqd)->queue, \
bfqg_to_blkg(bfqq_group(bfqq))->blkcg, \ &bfqg_to_blkg(bfqq_group(bfqq))->blkcg->css, \
"%s " fmt, pid_str, ##args); \ "%s " fmt, pid_str, ##args); \
} while (0) } while (0)
#define bfq_log_bfqg(bfqd, bfqg, fmt, args...) do { \ #define bfq_log_bfqg(bfqd, bfqg, fmt, args...) do { \
blk_add_cgroup_trace_msg((bfqd)->queue, \ blk_add_cgroup_trace_msg((bfqd)->queue, \
bfqg_to_blkg(bfqg)->blkcg, fmt, ##args); \ &bfqg_to_blkg(bfqg)->blkcg->css, fmt, ##args); \
} while (0) } while (0)
#else /* CONFIG_BFQ_GROUP_IOSCHED */ #else /* CONFIG_BFQ_GROUP_IOSCHED */
......
...@@ -227,7 +227,7 @@ static unsigned int tg_iops_limit(struct throtl_grp *tg, int rw) ...@@ -227,7 +227,7 @@ static unsigned int tg_iops_limit(struct throtl_grp *tg, int rw)
break; \ break; \
if ((__tg)) { \ if ((__tg)) { \
blk_add_cgroup_trace_msg(__td->queue, \ blk_add_cgroup_trace_msg(__td->queue, \
tg_to_blkg(__tg)->blkcg, "throtl " fmt, ##args);\ &tg_to_blkg(__tg)->blkcg->css, "throtl " fmt, ##args);\
} else { \ } else { \
blk_add_trace_msg(__td->queue, "throtl " fmt, ##args); \ blk_add_trace_msg(__td->queue, "throtl " fmt, ##args); \
} \ } \
......
...@@ -27,12 +27,10 @@ struct blk_trace { ...@@ -27,12 +27,10 @@ struct blk_trace {
atomic_t dropped; atomic_t dropped;
}; };
struct blkcg;
extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *); extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
extern void blk_trace_shutdown(struct request_queue *); extern void blk_trace_shutdown(struct request_queue *);
extern __printf(3, 4) __printf(3, 4) void __blk_trace_note_message(struct blk_trace *bt,
void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *fmt, ...); struct cgroup_subsys_state *css, const char *fmt, ...);
/** /**
* blk_add_trace_msg - Add a (simple) message to the blktrace stream * blk_add_trace_msg - Add a (simple) message to the blktrace stream
...@@ -47,14 +45,14 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f ...@@ -47,14 +45,14 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f
* NOTE: Can not use 'static inline' due to presence of var args... * NOTE: Can not use 'static inline' due to presence of var args...
* *
**/ **/
#define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \ #define blk_add_cgroup_trace_msg(q, css, fmt, ...) \
do { \ do { \
struct blk_trace *bt; \ struct blk_trace *bt; \
\ \
rcu_read_lock(); \ rcu_read_lock(); \
bt = rcu_dereference((q)->blk_trace); \ bt = rcu_dereference((q)->blk_trace); \
if (unlikely(bt)) \ if (unlikely(bt)) \
__trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\ __blk_trace_note_message(bt, css, fmt, ##__VA_ARGS__);\
rcu_read_unlock(); \ rcu_read_unlock(); \
} while (0) } while (0)
#define blk_add_trace_msg(q, fmt, ...) \ #define blk_add_trace_msg(q, fmt, ...) \
......
...@@ -145,13 +145,14 @@ static void trace_note_time(struct blk_trace *bt) ...@@ -145,13 +145,14 @@ static void trace_note_time(struct blk_trace *bt)
local_irq_restore(flags); local_irq_restore(flags);
} }
void __trace_note_message(struct blk_trace *bt, struct blkcg *blkcg, void __blk_trace_note_message(struct blk_trace *bt,
const char *fmt, ...) struct cgroup_subsys_state *css, const char *fmt, ...)
{ {
int n; int n;
va_list args; va_list args;
unsigned long flags; unsigned long flags;
char *buf; char *buf;
u64 cgid = 0;
if (unlikely(bt->trace_state != Blktrace_running && if (unlikely(bt->trace_state != Blktrace_running &&
!blk_tracer_enabled)) !blk_tracer_enabled))
...@@ -170,17 +171,16 @@ void __trace_note_message(struct blk_trace *bt, struct blkcg *blkcg, ...@@ -170,17 +171,16 @@ void __trace_note_message(struct blk_trace *bt, struct blkcg *blkcg,
n = vscnprintf(buf, BLK_TN_MAX_MSG, fmt, args); n = vscnprintf(buf, BLK_TN_MAX_MSG, fmt, args);
va_end(args); va_end(args);
if (!(blk_tracer_flags.val & TRACE_BLK_OPT_CGROUP))
blkcg = NULL;
#ifdef CONFIG_BLK_CGROUP #ifdef CONFIG_BLK_CGROUP
trace_note(bt, current->pid, BLK_TN_MESSAGE, buf, n, if (css && (blk_tracer_flags.val & TRACE_BLK_OPT_CGROUP))
blkcg ? cgroup_id(blkcg->css.cgroup) : 1); cgid = cgroup_id(css->cgroup);
#else else
trace_note(bt, current->pid, BLK_TN_MESSAGE, buf, n, 0); cgid = 1;
#endif #endif
trace_note(bt, current->pid, BLK_TN_MESSAGE, buf, n, cgid);
local_irq_restore(flags); local_irq_restore(flags);
} }
EXPORT_SYMBOL_GPL(__trace_note_message); EXPORT_SYMBOL_GPL(__blk_trace_note_message);
static int act_log_check(struct blk_trace *bt, u32 what, sector_t sector, static int act_log_check(struct blk_trace *bt, u32 what, sector_t sector,
pid_t pid) pid_t pid)
...@@ -411,7 +411,7 @@ static ssize_t blk_msg_write(struct file *filp, const char __user *buffer, ...@@ -411,7 +411,7 @@ static ssize_t blk_msg_write(struct file *filp, const char __user *buffer,
return PTR_ERR(msg); return PTR_ERR(msg);
bt = filp->private_data; bt = filp->private_data;
__trace_note_message(bt, NULL, "%s", msg); __blk_trace_note_message(bt, NULL, "%s", msg);
kfree(msg); kfree(msg);
return count; return count;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment