mm/damon/sysfs: eliminate potential uninitialized variable warning
[platform/kernel/linux-starfive.git] / block / blk-wbt.c
index 9ec2a2f..0bb6131 100644 (file)
@@ -146,7 +146,7 @@ enum {
 static inline bool rwb_enabled(struct rq_wb *rwb)
 {
        return rwb && rwb->enable_state != WBT_STATE_OFF_DEFAULT &&
-                     rwb->wb_normal != 0;
+                     rwb->enable_state != WBT_STATE_OFF_MANUAL;
 }
 
 static void wb_timestamp(struct rq_wb *rwb, unsigned long *var)
@@ -201,15 +201,6 @@ static void wbt_rqw_done(struct rq_wb *rwb, struct rq_wait *rqw,
        inflight = atomic_dec_return(&rqw->inflight);
 
        /*
-        * wbt got disabled with IO in flight. Wake up any potential
-        * waiters, we don't have to do more than that.
-        */
-       if (unlikely(!rwb_enabled(rwb))) {
-               rwb_wake_all(rwb);
-               return;
-       }
-
-       /*
         * For discards, our limit is always the background. For writes, if
         * the device does write back caching, drop further down before we
         * wake people up.
@@ -503,8 +494,7 @@ 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;
+       return !rqos || !rwb_enabled(RQWB(rqos));
 }
 
 u64 wbt_get_min_lat(struct request_queue *q)
@@ -545,13 +535,6 @@ static inline unsigned int get_limit(struct rq_wb *rwb, blk_opf_t opf)
 {
        unsigned int limit;
 
-       /*
-        * If we got disabled, just return UINT_MAX. This ensures that
-        * we'll properly inc a new IO, and dec+wakeup at the end.
-        */
-       if (!rwb_enabled(rwb))
-               return UINT_MAX;
-
        if ((opf & REQ_OP_MASK) == REQ_OP_DISCARD)
                return rwb->wb_background;
 
@@ -944,7 +927,9 @@ int wbt_init(struct gendisk *disk)
        /*
         * Assign rwb and add the stats callback.
         */
+       mutex_lock(&q->rq_qos_mutex);
        ret = rq_qos_add(&rwb->rqos, disk, RQ_QOS_WBT, &wbt_rqos_ops);
+       mutex_unlock(&q->rq_qos_mutex);
        if (ret)
                goto err_free;