ANDROID: block: Make sub_page_limit_queues available in debugfs
This new debugfs attribute makes it easier to verify the code that tracks how many queues require limits below the page size. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Cc: Christoph Hellwig <hch@lst.de> Cc: Ming Lei <ming.lei@redhat.com> Cc: Keith Busch <kbusch@kernel.org> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Sandeep Dhavale <dhavale@google.com> Bug: 346870006 Link: https://lore.kernel.org/all/20230612203314.17820-5-bvanassche@acm.org/ [dhavale: this patch is from the series is rejected upstream but we would like this to be in android kernel in order to support 16KB page size on storage devices with max segment size 4KB] Change-Id: Ifae8e08cff597c42f5a5630fac160982af5dc699
This commit is contained in:
@@ -45,6 +45,7 @@
|
||||
#include <trace/events/block.h>
|
||||
|
||||
#include "blk.h"
|
||||
#include "blk-mq-debugfs.h"
|
||||
#include "blk-mq-sched.h"
|
||||
#include "blk-pm.h"
|
||||
#include "blk-cgroup.h"
|
||||
@@ -1279,6 +1280,7 @@ int __init blk_dev_init(void)
|
||||
blk_requestq_cachep = KMEM_CACHE(request_queue, SLAB_PANIC);
|
||||
|
||||
blk_debugfs_root = debugfs_create_dir("block", NULL);
|
||||
blk_mq_debugfs_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -829,3 +829,11 @@ void blk_mq_debugfs_unregister_sched_hctx(struct blk_mq_hw_ctx *hctx)
|
||||
debugfs_remove_recursive(hctx->sched_debugfs_dir);
|
||||
hctx->sched_debugfs_dir = NULL;
|
||||
}
|
||||
DEFINE_DEBUGFS_ATTRIBUTE(blk_sub_page_limit_queues_fops,
|
||||
blk_sub_page_limit_queues_get, NULL, "%llu\n");
|
||||
|
||||
void blk_mq_debugfs_init(void)
|
||||
{
|
||||
debugfs_create_file("sub_page_limit_queues", 0400, blk_debugfs_root,
|
||||
NULL, &blk_sub_page_limit_queues_fops);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ struct blk_mq_debugfs_attr {
|
||||
const struct seq_operations *seq_ops;
|
||||
};
|
||||
|
||||
void blk_mq_debugfs_init(void);
|
||||
int __blk_mq_debugfs_rq_show(struct seq_file *m, struct request *rq);
|
||||
int blk_mq_debugfs_rq_show(struct seq_file *m, void *v);
|
||||
|
||||
@@ -36,6 +37,10 @@ void blk_mq_debugfs_unregister_sched_hctx(struct blk_mq_hw_ctx *hctx);
|
||||
void blk_mq_debugfs_register_rqos(struct rq_qos *rqos);
|
||||
void blk_mq_debugfs_unregister_rqos(struct rq_qos *rqos);
|
||||
#else
|
||||
static inline void blk_mq_debugfs_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void blk_mq_debugfs_register(struct request_queue *q)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -225,6 +225,14 @@ unsupported:
|
||||
lim->atomic_write_unit_max = 0;
|
||||
}
|
||||
|
||||
/* For debugfs. */
|
||||
int blk_sub_page_limit_queues_get(void *data, u64 *val)
|
||||
{
|
||||
*val = READ_ONCE(blk_nr_sub_page_limit_queues);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* blk_enable_sub_page_limits - enable support for limits below the page size
|
||||
* @lim: request queue limits for which to enable support of these features.
|
||||
|
||||
+1
-1
@@ -44,12 +44,12 @@ bool __blk_freeze_queue_start(struct request_queue *q,
|
||||
int __bio_queue_enter(struct request_queue *q, struct bio *bio);
|
||||
void submit_bio_noacct_nocheck(struct bio *bio);
|
||||
void bio_await_chain(struct bio *bio);
|
||||
|
||||
static inline bool blk_queue_sub_page_limits(const struct queue_limits *lim)
|
||||
{
|
||||
return static_branch_unlikely(&blk_sub_page_limits) &&
|
||||
lim->sub_page_limits;
|
||||
}
|
||||
int blk_sub_page_limit_queues_get(void *data, u64 *val);
|
||||
void blk_disable_sub_page_limits(struct queue_limits *q);
|
||||
static inline bool blk_try_enter_queue(struct request_queue *q, bool pm)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user