dm thin: simplify pool_is_congested
authorMike Snitzer <snitzer@redhat.com>
Thu, 20 Mar 2014 12:36:47 +0000 (08:36 -0400)
committerMike Snitzer <snitzer@redhat.com>
Sat, 22 Mar 2014 16:48:43 +0000 (12:48 -0400)
drivers/md/dm-thin.c

index be70d38745f7a7f5da51bd4ba83a29afe851b238..d842c542f61331268132817e2a061e70a60522c1 100644 (file)
@@ -1757,20 +1757,14 @@ static int thin_bio_map(struct dm_target *ti, struct bio *bio)
 
 static int pool_is_congested(struct dm_target_callbacks *cb, int bdi_bits)
 {
-       int r;
-       unsigned long flags;
        struct pool_c *pt = container_of(cb, struct pool_c, callbacks);
+       struct request_queue *q;
 
-       spin_lock_irqsave(&pt->pool->lock, flags);
-       r = !bio_list_empty(&pt->pool->retry_on_resume_list);
-       spin_unlock_irqrestore(&pt->pool->lock, flags);
+       if (get_pool_mode(pt->pool) == PM_OUT_OF_DATA_SPACE)
+               return 1;
 
-       if (!r) {
-               struct request_queue *q = bdev_get_queue(pt->data_dev->bdev);
-               r = bdi_congested(&q->backing_dev_info, bdi_bits);
-       }
-
-       return r;
+       q = bdev_get_queue(pt->data_dev->bdev);
+       return bdi_congested(&q->backing_dev_info, bdi_bits);
 }
 
 static void __requeue_bios(struct pool *pool)