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: Christoph Hellwig <hch@lst.de> Acked-by: Tejun Heo <tj@kernel.org> Link: https://lore.kernel.org/r/20220420042723.1010598-9-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
dec223c92a
commit
f4a6a61cb6
@ -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)
|
|||||||
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 {
|
|||||||
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
|
|||||||
* 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)
|
|||||||
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,
|
|||||||
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,
|
|||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user