dm bufio: refactor adjust_total_allocated
authorMikulas Patocka <mpatocka@redhat.com>
Thu, 12 Sep 2019 08:44:45 +0000 (10:44 +0200)
committerMike Snitzer <snitzer@redhat.com>
Fri, 13 Sep 2019 14:43:07 +0000 (10:43 -0400)
Refactor adjust_total_allocated() so that it takes a bool argument
indicating if it should add or subtract the buffer size.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-bufio.c

index d3c86bf..58df20f 100644 (file)
@@ -285,14 +285,22 @@ static void __remove(struct dm_bufio_client *c, struct dm_buffer *b)
 
 /*----------------------------------------------------------------*/
 
-static void adjust_total_allocated(unsigned char data_mode, long diff)
+static void adjust_total_allocated(struct dm_buffer *b, bool unlink)
 {
+       unsigned char data_mode;
+       long diff;
+
        static unsigned long * const class_ptr[DATA_MODE_LIMIT] = {
                &dm_bufio_allocated_kmem_cache,
                &dm_bufio_allocated_get_free_pages,
                &dm_bufio_allocated_vmalloc,
        };
 
+       data_mode = b->data_mode;
+       diff = (long)b->c->block_size;
+       if (unlink)
+               diff = -diff;
+
        spin_lock(&param_spinlock);
 
        *class_ptr[data_mode] += diff;
@@ -462,7 +470,7 @@ static void __link_buffer(struct dm_buffer *b, sector_t block, int dirty)
        __insert(b->c, b);
        b->last_accessed = jiffies;
 
-       adjust_total_allocated(b->data_mode, (long)c->block_size);
+       adjust_total_allocated(b, false);
 }
 
 /*
@@ -478,7 +486,7 @@ static void __unlink_buffer(struct dm_buffer *b)
        __remove(b->c, b);
        list_del(&b->lru_list);
 
-       adjust_total_allocated(b->data_mode, -(long)c->block_size);
+       adjust_total_allocated(b, true);
 }
 
 /*