未验证 提交 374ca1b0 编写于 作者: O openeuler-ci-bot 提交者: Gitee

!1378 [sync] PR-1295: blk-wbt: don't show valid wbt_lat_usec in

Merge Pull Request from: @openeuler-sync-bot 
 

Origin pull request: 
https://gitee.com/openeuler/kernel/pulls/1295 
 
PR sync from: Li Lingfeng <lilingfeng3@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/OFH6G7EUCRF236P635HQ5LEDXVZ4AEJJ/ 
Yu Kuai (2):
  blk-wbt: make enable_state more accurate
  blk-wbt: don't show valid wbt_lat_usec in sysfs while wbt is disabled


-- 
2.31.1
 
 
Link:https://gitee.com/openeuler/kernel/pulls/1378 

Reviewed-by: Yu Kuai <yukuai3@huawei.com> 
Reviewed-by: Jialin Zhang <zhangjialin11@huawei.com> 
Signed-off-by: Jialin Zhang <zhangjialin11@huawei.com> 
...@@ -461,6 +461,9 @@ static ssize_t queue_wb_lat_show(struct request_queue *q, char *page) ...@@ -461,6 +461,9 @@ static ssize_t queue_wb_lat_show(struct request_queue *q, char *page)
if (!wbt_rq_qos(q)) if (!wbt_rq_qos(q))
return -EINVAL; return -EINVAL;
if (wbt_disabled(q))
return sprintf(page, "0\n");
return sprintf(page, "%llu\n", div_u64(wbt_get_min_lat(q), 1000)); return sprintf(page, "%llu\n", div_u64(wbt_get_min_lat(q), 1000));
} }
......
...@@ -419,6 +419,14 @@ static void wbt_update_limits(struct rq_wb *rwb) ...@@ -419,6 +419,14 @@ static void wbt_update_limits(struct rq_wb *rwb)
rwb_wake_all(rwb); rwb_wake_all(rwb);
} }
bool wbt_disabled(struct request_queue *q)
{
struct rq_qos *rqos = wbt_rq_qos(q);
return !rqos || RQWB(rqos)->enable_state == WBT_STATE_OFF_DEFAULT ||
RQWB(rqos)->enable_state == WBT_STATE_OFF_MANUAL;
}
u64 wbt_get_min_lat(struct request_queue *q) u64 wbt_get_min_lat(struct request_queue *q)
{ {
struct rq_qos *rqos = wbt_rq_qos(q); struct rq_qos *rqos = wbt_rq_qos(q);
...@@ -432,8 +440,13 @@ void wbt_set_min_lat(struct request_queue *q, u64 val) ...@@ -432,8 +440,13 @@ void wbt_set_min_lat(struct request_queue *q, u64 val)
struct rq_qos *rqos = wbt_rq_qos(q); struct rq_qos *rqos = wbt_rq_qos(q);
if (!rqos) if (!rqos)
return; return;
RQWB(rqos)->min_lat_nsec = val; RQWB(rqos)->min_lat_nsec = val;
RQWB(rqos)->enable_state = WBT_STATE_ON_MANUAL; if (val)
RQWB(rqos)->enable_state = WBT_STATE_ON_MANUAL;
else
RQWB(rqos)->enable_state = WBT_STATE_OFF_MANUAL;
wbt_update_limits(RQWB(rqos)); wbt_update_limits(RQWB(rqos));
} }
......
...@@ -28,13 +28,15 @@ enum { ...@@ -28,13 +28,15 @@ enum {
}; };
/* /*
* Enable states. Either off, or on by default (done at init time), * If current state is WBT_STATE_ON/OFF_DEFAULT, it can be covered to any other
* or on through manual setup in sysfs. * state, if current state is WBT_STATE_ON/OFF_MANUAL, it can only be covered
* to WBT_STATE_OFF/ON_MANUAL.
*/ */
enum { enum {
WBT_STATE_ON_DEFAULT = 1, WBT_STATE_ON_DEFAULT = 1, /* on by default */
WBT_STATE_ON_MANUAL = 2, WBT_STATE_ON_MANUAL = 2, /* on manually by sysfs */
WBT_STATE_OFF_DEFAULT WBT_STATE_OFF_DEFAULT = 3, /* off by default */
WBT_STATE_OFF_MANUAL = 4, /* off manually by sysfs */
}; };
struct rq_wb { struct rq_wb {
...@@ -94,6 +96,7 @@ void wbt_enable_default(struct request_queue *); ...@@ -94,6 +96,7 @@ void wbt_enable_default(struct request_queue *);
u64 wbt_get_min_lat(struct request_queue *q); u64 wbt_get_min_lat(struct request_queue *q);
void wbt_set_min_lat(struct request_queue *q, u64 val); void wbt_set_min_lat(struct request_queue *q, u64 val);
bool wbt_disabled(struct request_queue *);
void wbt_set_write_cache(struct request_queue *, bool); void wbt_set_write_cache(struct request_queue *, bool);
...@@ -128,6 +131,10 @@ static inline u64 wbt_default_latency_nsec(struct request_queue *q) ...@@ -128,6 +131,10 @@ static inline u64 wbt_default_latency_nsec(struct request_queue *q)
{ {
return 0; return 0;
} }
static inline bool wbt_disabled(struct request_queue *q)
{
return true;
}
#endif /* CONFIG_BLK_WBT */ #endif /* CONFIG_BLK_WBT */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册