diff options
Diffstat (limited to 'drivers/md/dm-log-userspace-base.c')
| -rw-r--r-- | drivers/md/dm-log-userspace-base.c | 19 | 
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/md/dm-log-userspace-base.c b/drivers/md/dm-log-userspace-base.c index 53b7b06d0aa8..52090bee17c2 100644 --- a/drivers/md/dm-log-userspace-base.c +++ b/drivers/md/dm-log-userspace-base.c @@ -76,7 +76,7 @@ struct log_c {  	 */  	uint32_t integrated_flush; -	mempool_t *flush_entry_pool; +	mempool_t flush_entry_pool;  };  static struct kmem_cache *_flush_entry_cache; @@ -249,11 +249,10 @@ static int userspace_ctr(struct dm_dirty_log *log, struct dm_target *ti,  		goto out;  	} -	lc->flush_entry_pool = mempool_create_slab_pool(FLUSH_ENTRY_POOL_SIZE, -							_flush_entry_cache); -	if (!lc->flush_entry_pool) { +	r = mempool_init_slab_pool(&lc->flush_entry_pool, FLUSH_ENTRY_POOL_SIZE, +				   _flush_entry_cache); +	if (r) {  		DMERR("Failed to create flush_entry_pool"); -		r = -ENOMEM;  		goto out;  	} @@ -313,7 +312,7 @@ static int userspace_ctr(struct dm_dirty_log *log, struct dm_target *ti,  out:  	kfree(devices_rdata);  	if (r) { -		mempool_destroy(lc->flush_entry_pool); +		mempool_exit(&lc->flush_entry_pool);  		kfree(lc);  		kfree(ctr_str);  	} else { @@ -342,7 +341,7 @@ static void userspace_dtr(struct dm_dirty_log *log)  	if (lc->log_dev)  		dm_put_device(lc->ti, lc->log_dev); -	mempool_destroy(lc->flush_entry_pool); +	mempool_exit(&lc->flush_entry_pool);  	kfree(lc->usr_argv_str);  	kfree(lc); @@ -570,7 +569,7 @@ static int userspace_flush(struct dm_dirty_log *log)  	int mark_list_is_empty;  	int clear_list_is_empty;  	struct dm_dirty_log_flush_entry *fe, *tmp_fe; -	mempool_t *flush_entry_pool = lc->flush_entry_pool; +	mempool_t *flush_entry_pool = &lc->flush_entry_pool;  	spin_lock_irqsave(&lc->flush_lock, flags);  	list_splice_init(&lc->mark_list, &mark_list); @@ -653,7 +652,7 @@ static void userspace_mark_region(struct dm_dirty_log *log, region_t region)  	struct dm_dirty_log_flush_entry *fe;  	/* Wait for an allocation, but _never_ fail */ -	fe = mempool_alloc(lc->flush_entry_pool, GFP_NOIO); +	fe = mempool_alloc(&lc->flush_entry_pool, GFP_NOIO);  	BUG_ON(!fe);  	spin_lock_irqsave(&lc->flush_lock, flags); @@ -687,7 +686,7 @@ static void userspace_clear_region(struct dm_dirty_log *log, region_t region)  	 * to cause the region to be resync'ed when the  	 * device is activated next time.  	 */ -	fe = mempool_alloc(lc->flush_entry_pool, GFP_ATOMIC); +	fe = mempool_alloc(&lc->flush_entry_pool, GFP_ATOMIC);  	if (!fe) {  		DMERR("Failed to allocate memory to clear region.");  		return;  | 
