dm: convert to bioset_init()/mempool_init()
Convert dm to embedded bio sets. Acked-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
@@ -63,7 +63,7 @@ struct dm_region_hash {
|
||||
|
||||
/* hash table */
|
||||
rwlock_t hash_lock;
|
||||
mempool_t *region_pool;
|
||||
mempool_t region_pool;
|
||||
unsigned mask;
|
||||
unsigned nr_buckets;
|
||||
unsigned prime;
|
||||
@@ -169,6 +169,7 @@ struct dm_region_hash *dm_region_hash_create(
|
||||
struct dm_region_hash *rh;
|
||||
unsigned nr_buckets, max_buckets;
|
||||
size_t i;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Calculate a suitable number of buckets for our hash
|
||||
@@ -220,9 +221,9 @@ struct dm_region_hash *dm_region_hash_create(
|
||||
INIT_LIST_HEAD(&rh->failed_recovered_regions);
|
||||
rh->flush_failure = 0;
|
||||
|
||||
rh->region_pool = mempool_create_kmalloc_pool(MIN_REGIONS,
|
||||
sizeof(struct dm_region));
|
||||
if (!rh->region_pool) {
|
||||
ret = mempool_init_kmalloc_pool(&rh->region_pool, MIN_REGIONS,
|
||||
sizeof(struct dm_region));
|
||||
if (ret) {
|
||||
vfree(rh->buckets);
|
||||
kfree(rh);
|
||||
rh = ERR_PTR(-ENOMEM);
|
||||
@@ -242,14 +243,14 @@ void dm_region_hash_destroy(struct dm_region_hash *rh)
|
||||
list_for_each_entry_safe(reg, nreg, rh->buckets + h,
|
||||
hash_list) {
|
||||
BUG_ON(atomic_read(®->pending));
|
||||
mempool_free(reg, rh->region_pool);
|
||||
mempool_free(reg, &rh->region_pool);
|
||||
}
|
||||
}
|
||||
|
||||
if (rh->log)
|
||||
dm_dirty_log_destroy(rh->log);
|
||||
|
||||
mempool_destroy(rh->region_pool);
|
||||
mempool_exit(&rh->region_pool);
|
||||
vfree(rh->buckets);
|
||||
kfree(rh);
|
||||
}
|
||||
@@ -287,7 +288,7 @@ static struct dm_region *__rh_alloc(struct dm_region_hash *rh, region_t region)
|
||||
{
|
||||
struct dm_region *reg, *nreg;
|
||||
|
||||
nreg = mempool_alloc(rh->region_pool, GFP_ATOMIC);
|
||||
nreg = mempool_alloc(&rh->region_pool, GFP_ATOMIC);
|
||||
if (unlikely(!nreg))
|
||||
nreg = kmalloc(sizeof(*nreg), GFP_NOIO | __GFP_NOFAIL);
|
||||
|
||||
@@ -303,7 +304,7 @@ static struct dm_region *__rh_alloc(struct dm_region_hash *rh, region_t region)
|
||||
reg = __rh_lookup(rh, region);
|
||||
if (reg)
|
||||
/* We lost the race. */
|
||||
mempool_free(nreg, rh->region_pool);
|
||||
mempool_free(nreg, &rh->region_pool);
|
||||
else {
|
||||
__rh_insert(rh, nreg);
|
||||
if (nreg->state == DM_RH_CLEAN) {
|
||||
@@ -481,17 +482,17 @@ void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled)
|
||||
list_for_each_entry_safe(reg, next, &recovered, list) {
|
||||
rh->log->type->clear_region(rh->log, reg->key);
|
||||
complete_resync_work(reg, 1);
|
||||
mempool_free(reg, rh->region_pool);
|
||||
mempool_free(reg, &rh->region_pool);
|
||||
}
|
||||
|
||||
list_for_each_entry_safe(reg, next, &failed_recovered, list) {
|
||||
complete_resync_work(reg, errors_handled ? 0 : 1);
|
||||
mempool_free(reg, rh->region_pool);
|
||||
mempool_free(reg, &rh->region_pool);
|
||||
}
|
||||
|
||||
list_for_each_entry_safe(reg, next, &clean, list) {
|
||||
rh->log->type->clear_region(rh->log, reg->key);
|
||||
mempool_free(reg, rh->region_pool);
|
||||
mempool_free(reg, &rh->region_pool);
|
||||
}
|
||||
|
||||
rh->log->type->flush(rh->log);
|
||||
|
Reference in New Issue
Block a user