From: Zhaoyang Huang <[email protected]>
In previous version, block layer will set bdi to be congested when
get_request fail, which may throttle direct_reclaim. Move them back
under current blk-mq design.
Signed-off-by: Zhaoyang Huang <[email protected]>
---
v2: simplify the code
---
---
block/blk-mq-tag.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index 995336a..0cbc445 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -11,6 +11,7 @@
#include <linux/blk-mq.h>
#include <linux/delay.h>
+#include <linux/backing-dev.h>
#include "blk.h"
#include "blk-mq.h"
#include "blk-mq-sched.h"
@@ -126,6 +127,8 @@ unsigned int blk_mq_get_tag(struct blk_mq_alloc_data *data)
if (tag != BLK_MQ_NO_TAG)
goto found_tag;
+ set_bdi_congested(data->q->disk->bdi,BLK_RW_SYNC);
+ set_bdi_congested(data->q->disk->bdi,BLK_RW_ASYNC);
if (data->flags & BLK_MQ_REQ_NOWAIT)
return BLK_MQ_NO_TAG;
@@ -190,6 +193,8 @@ unsigned int blk_mq_get_tag(struct blk_mq_alloc_data *data)
blk_mq_put_tag(tags, data->ctx, tag + tag_offset);
return BLK_MQ_NO_TAG;
}
+ clear_bdi_congested(data->q->disk->bdi,BLK_RW_SYNC);
+ clear_bdi_congested(data->q->disk->bdi,BLK_RW_ASYNC);
return tag + tag_offset;
}
--
1.9.1
On 6/16/22 6:30 AM, zhaoyang.huang wrote:
> From: Zhaoyang Huang <[email protected]>
>
> In previous version, block layer will set bdi to be congested when
> get_request fail, which may throttle direct_reclaim. Move them back
> under current blk-mq design.
bdi congestion doesn't exist anymore, not sure what this patch is
against?
--
Jens Axboe
On 6/16/22 6:30 AM, zhaoyang.huang wrote:
> From: Zhaoyang Huang <[email protected]>
>
> In previous version, block layer will set bdi to be congested when
> get_request fail, which may throttle direct_reclaim. Move them back
> under current blk-mq design.
bdi congestion doesn't exist anymore, not sure what this patch is
against?
ok. What i am trying to solve is introducing reclaim throttle when excessive number of IOs consume all tags on hwctx. It is could be introduced by page thrashing or access of mapped lib files.
--
Jens Axboe