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 <mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
26d2ef0cd0
commit
d0a328a385
@ -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] = {
|
static unsigned long * const class_ptr[DATA_MODE_LIMIT] = {
|
||||||
&dm_bufio_allocated_kmem_cache,
|
&dm_bufio_allocated_kmem_cache,
|
||||||
&dm_bufio_allocated_get_free_pages,
|
&dm_bufio_allocated_get_free_pages,
|
||||||
&dm_bufio_allocated_vmalloc,
|
&dm_bufio_allocated_vmalloc,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
data_mode = b->data_mode;
|
||||||
|
diff = (long)b->c->block_size;
|
||||||
|
if (unlink)
|
||||||
|
diff = -diff;
|
||||||
|
|
||||||
spin_lock(¶m_spinlock);
|
spin_lock(¶m_spinlock);
|
||||||
|
|
||||||
*class_ptr[data_mode] += diff;
|
*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);
|
__insert(b->c, b);
|
||||||
b->last_accessed = jiffies;
|
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);
|
__remove(b->c, b);
|
||||||
list_del(&b->lru_list);
|
list_del(&b->lru_list);
|
||||||
|
|
||||||
adjust_total_allocated(b->data_mode, -(long)c->block_size);
|
adjust_total_allocated(b, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user