dm cache: pull out some bitset utility functions for reuse
Signed-off-by: Joe Thornber <ejt@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:

committed by
Mike Snitzer

parent
20f6814b94
commit
451b9e0071
@@ -7,6 +7,7 @@
|
|||||||
#ifndef DM_CACHE_POLICY_INTERNAL_H
|
#ifndef DM_CACHE_POLICY_INTERNAL_H
|
||||||
#define DM_CACHE_POLICY_INTERNAL_H
|
#define DM_CACHE_POLICY_INTERNAL_H
|
||||||
|
|
||||||
|
#include <linux/vmalloc.h>
|
||||||
#include "dm-cache-policy.h"
|
#include "dm-cache-policy.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------*/
|
/*----------------------------------------------------------------*/
|
||||||
@@ -106,6 +107,33 @@ static inline int policy_set_config_value(struct dm_cache_policy *p,
|
|||||||
|
|
||||||
/*----------------------------------------------------------------*/
|
/*----------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some utility functions commonly used by policies and the core target.
|
||||||
|
*/
|
||||||
|
static inline size_t bitset_size_in_bytes(unsigned nr_entries)
|
||||||
|
{
|
||||||
|
return sizeof(unsigned long) * dm_div_up(nr_entries, BITS_PER_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned long *alloc_bitset(unsigned nr_entries)
|
||||||
|
{
|
||||||
|
size_t s = bitset_size_in_bytes(nr_entries);
|
||||||
|
return vzalloc(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void clear_bitset(void *bitset, unsigned nr_entries)
|
||||||
|
{
|
||||||
|
size_t s = bitset_size_in_bytes(nr_entries);
|
||||||
|
memset(bitset, 0, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void free_bitset(unsigned long *bits)
|
||||||
|
{
|
||||||
|
vfree(bits);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates a new cache policy given a policy name, a cache size, an origin size and the block size.
|
* Creates a new cache policy given a policy name, a cache size, an origin size and the block size.
|
||||||
*/
|
*/
|
||||||
|
@@ -111,30 +111,6 @@ static void iot_io_end(struct io_tracker *iot, sector_t len)
|
|||||||
|
|
||||||
/*----------------------------------------------------------------*/
|
/*----------------------------------------------------------------*/
|
||||||
|
|
||||||
static size_t bitset_size_in_bytes(unsigned nr_entries)
|
|
||||||
{
|
|
||||||
return sizeof(unsigned long) * dm_div_up(nr_entries, BITS_PER_LONG);
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long *alloc_bitset(unsigned nr_entries)
|
|
||||||
{
|
|
||||||
size_t s = bitset_size_in_bytes(nr_entries);
|
|
||||||
return vzalloc(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void clear_bitset(void *bitset, unsigned nr_entries)
|
|
||||||
{
|
|
||||||
size_t s = bitset_size_in_bytes(nr_entries);
|
|
||||||
memset(bitset, 0, s);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_bitset(unsigned long *bits)
|
|
||||||
{
|
|
||||||
vfree(bits);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There are a couple of places where we let a bio run, but want to do some
|
* There are a couple of places where we let a bio run, but want to do some
|
||||||
* work before calling its endio function. We do this by temporarily
|
* work before calling its endio function. We do this by temporarily
|
||||||
|
Reference in New Issue
Block a user