From d0a328a385d2d1ab87e7a959d91c1841ed5a498f Mon Sep 17 00:00:00 2001 From: Mikulas Patocka Date: Thu, 12 Sep 2019 10:44:45 +0200 Subject: dm bufio: refactor adjust_total_allocated 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 Signed-off-by: Mike Snitzer --- drivers/md/dm-bufio.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'drivers/md/dm-bufio.c') diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c index d3c86bf00075..58df20fd5465 100644 --- a/drivers/md/dm-bufio.c +++ b/drivers/md/dm-bufio.c @@ -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(¶m_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); } /* -- cgit v1.2.3-70-g09d2