]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
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>
Mon, 31 Mar 2014 14:05:51 +0000 (10:05 -0400)
The pool is congested if the pool is in PM_OUT_OF_DATA_SPACE mode.  This
is more explicit/clear/efficient than inferring whether or not the pool
is congested by checking if retry_on_resume_list is empty.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Acked-by: Joe Thornber <ejt@redhat.com>
drivers/md/dm-thin.c

index 60cc50685c14afae7c7f734971ca4453ec33bae8..af871fd48eb4f86b5096c656d2fae759aff603cd 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)