mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
block/blk-mq-debugfs: Improve lock context annotations
Make the existing lock context annotations compatible with Clang. Add the lock context annotations that are missing. Reviewed-by: Hannes Reinecke <hare@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Link: https://patch.msgid.link/f58fe220ff98f9dfddfed4573f40005c773b7fb7.1780682325.git.bvanassche@acm.org Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
a255026594
commit
131f14125a
|
|
@ -19,8 +19,10 @@ static int queue_poll_stat_show(void *data, struct seq_file *m)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define TO_REQUEST_QUEUE(m) ((struct request_queue *)m->private)
|
||||
|
||||
static void *queue_requeue_list_start(struct seq_file *m, loff_t *pos)
|
||||
__acquires(&q->requeue_lock)
|
||||
__acquires(&TO_REQUEST_QUEUE(m)->requeue_lock)
|
||||
{
|
||||
struct request_queue *q = m->private;
|
||||
|
||||
|
|
@ -36,13 +38,15 @@ static void *queue_requeue_list_next(struct seq_file *m, void *v, loff_t *pos)
|
|||
}
|
||||
|
||||
static void queue_requeue_list_stop(struct seq_file *m, void *v)
|
||||
__releases(&q->requeue_lock)
|
||||
__releases(&TO_REQUEST_QUEUE(m)->requeue_lock)
|
||||
{
|
||||
struct request_queue *q = m->private;
|
||||
|
||||
spin_unlock_irq(&q->requeue_lock);
|
||||
}
|
||||
|
||||
#undef TO_REQUEST_QUEUE
|
||||
|
||||
static const struct seq_operations queue_requeue_list_seq_ops = {
|
||||
.start = queue_requeue_list_start,
|
||||
.next = queue_requeue_list_next,
|
||||
|
|
@ -297,8 +301,10 @@ int blk_mq_debugfs_rq_show(struct seq_file *m, void *v)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(blk_mq_debugfs_rq_show);
|
||||
|
||||
#define TO_HCTX(m) ((struct blk_mq_hw_ctx *)m->private)
|
||||
|
||||
static void *hctx_dispatch_start(struct seq_file *m, loff_t *pos)
|
||||
__acquires(&hctx->lock)
|
||||
__acquires(&TO_HCTX(m)->lock)
|
||||
{
|
||||
struct blk_mq_hw_ctx *hctx = m->private;
|
||||
|
||||
|
|
@ -314,13 +320,15 @@ static void *hctx_dispatch_next(struct seq_file *m, void *v, loff_t *pos)
|
|||
}
|
||||
|
||||
static void hctx_dispatch_stop(struct seq_file *m, void *v)
|
||||
__releases(&hctx->lock)
|
||||
__releases(&TO_HCTX(m)->lock)
|
||||
{
|
||||
struct blk_mq_hw_ctx *hctx = m->private;
|
||||
|
||||
spin_unlock(&hctx->lock);
|
||||
}
|
||||
|
||||
#undef TO_HCTX
|
||||
|
||||
static const struct seq_operations hctx_dispatch_seq_ops = {
|
||||
.start = hctx_dispatch_start,
|
||||
.next = hctx_dispatch_next,
|
||||
|
|
@ -484,9 +492,11 @@ static int hctx_dispatch_busy_show(void *data, struct seq_file *m)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define TO_CTX(m) ((struct blk_mq_ctx *)m->private)
|
||||
|
||||
#define CTX_RQ_SEQ_OPS(name, type) \
|
||||
static void *ctx_##name##_rq_list_start(struct seq_file *m, loff_t *pos) \
|
||||
__acquires(&ctx->lock) \
|
||||
__acquires(&TO_CTX(m)->lock) \
|
||||
{ \
|
||||
struct blk_mq_ctx *ctx = m->private; \
|
||||
\
|
||||
|
|
@ -503,7 +513,7 @@ static void *ctx_##name##_rq_list_next(struct seq_file *m, void *v, \
|
|||
} \
|
||||
\
|
||||
static void ctx_##name##_rq_list_stop(struct seq_file *m, void *v) \
|
||||
__releases(&ctx->lock) \
|
||||
__releases(&TO_CTX(m)->lock) \
|
||||
{ \
|
||||
struct blk_mq_ctx *ctx = m->private; \
|
||||
\
|
||||
|
|
@ -521,6 +531,8 @@ CTX_RQ_SEQ_OPS(default, HCTX_TYPE_DEFAULT);
|
|||
CTX_RQ_SEQ_OPS(read, HCTX_TYPE_READ);
|
||||
CTX_RQ_SEQ_OPS(poll, HCTX_TYPE_POLL);
|
||||
|
||||
#undef TO_CTX
|
||||
|
||||
static int blk_mq_debugfs_show(struct seq_file *m, void *v)
|
||||
{
|
||||
const struct blk_mq_debugfs_attr *attr = m->private;
|
||||
|
|
|
|||
|
|
@ -756,16 +756,19 @@ static inline void blk_unfreeze_release_lock(struct request_queue *q)
|
|||
* reclaim from triggering block I/O.
|
||||
*/
|
||||
static inline void blk_debugfs_lock_nomemsave(struct request_queue *q)
|
||||
__acquires(&q->debugfs_mutex)
|
||||
{
|
||||
mutex_lock(&q->debugfs_mutex);
|
||||
}
|
||||
|
||||
static inline void blk_debugfs_unlock_nomemrestore(struct request_queue *q)
|
||||
__releases(&q->debugfs_mutex)
|
||||
{
|
||||
mutex_unlock(&q->debugfs_mutex);
|
||||
}
|
||||
|
||||
static inline unsigned int __must_check blk_debugfs_lock(struct request_queue *q)
|
||||
__acquires(&q->debugfs_mutex)
|
||||
{
|
||||
unsigned int memflags = memalloc_noio_save();
|
||||
|
||||
|
|
@ -775,6 +778,7 @@ static inline unsigned int __must_check blk_debugfs_lock(struct request_queue *q
|
|||
|
||||
static inline void blk_debugfs_unlock(struct request_queue *q,
|
||||
unsigned int memflags)
|
||||
__releases(&q->debugfs_mutex)
|
||||
{
|
||||
blk_debugfs_unlock_nomemrestore(q);
|
||||
memalloc_noio_restore(memflags);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user