[2/2] block: Avoid that sparse complains about context imbalance in __wbt_wait()
diff mbox

Message ID 1483362874.3592.60.camel@sandisk.com
State New
Headers show

Commit Message

Bart Van Assche Jan. 2, 2017, 1:16 p.m. UTC
This patch does not change any functionality.

Fixes: e34cbd307477 ("blk-wbt: add general throttling mechanism")
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>

---
 block/blk-wbt.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

-- 
2.11.0

Patch
diff mbox

diff --git a/block/blk-wbt.c b/block/blk-wbt.c
index fd28c2806406..aa7b9ccc6fc5 100644
--- a/block/blk-wbt.c
+++ b/block/blk-wbt.c
@@ -544,6 +544,8 @@  static inline bool may_queue(struct rq_wb *rwb, struct rq_wait *rqw,
  * the timer to kick off queuing again.
  */
 static void __wbt_wait(struct rq_wb *rwb, unsigned long rw, spinlock_t *lock)
+	__releases(lock)
+	__acquires(lock)
 {
 	struct rq_wait *rqw = get_rq_wait(rwb, current_is_kswapd());
 	DEFINE_WAIT(wait);
@@ -558,13 +560,13 @@  static void __wbt_wait(struct rq_wb *rwb, unsigned long rw, spinlock_t *lock)
 		if (may_queue(rwb, rqw, &wait, rw))
 			break;
 
-		if (lock)
+		if (lock) {
 			spin_unlock_irq(lock);
-
-		io_schedule();
-
-		if (lock)
+			io_schedule();
 			spin_lock_irq(lock);
+		} else {
+			io_schedule();
+		}
 	} while (1);
 
 	finish_wait(&rqw->wait, &wait);