|
@@ -13,6 +13,7 @@
|
|
|
#include "persistent-data/dm-transaction-manager.h"
|
|
|
|
|
|
#include <linux/device-mapper.h>
|
|
|
+#include <linux/refcount.h>
|
|
|
|
|
|
/*----------------------------------------------------------------*/
|
|
|
|
|
@@ -100,7 +101,7 @@ struct cache_disk_superblock {
|
|
|
} __packed;
|
|
|
|
|
|
struct dm_cache_metadata {
|
|
|
- atomic_t ref_count;
|
|
|
+ refcount_t ref_count;
|
|
|
struct list_head list;
|
|
|
|
|
|
unsigned version;
|
|
@@ -753,7 +754,7 @@ static struct dm_cache_metadata *metadata_open(struct block_device *bdev,
|
|
|
}
|
|
|
|
|
|
cmd->version = metadata_version;
|
|
|
- atomic_set(&cmd->ref_count, 1);
|
|
|
+ refcount_set(&cmd->ref_count, 1);
|
|
|
init_rwsem(&cmd->root_lock);
|
|
|
cmd->bdev = bdev;
|
|
|
cmd->data_block_size = data_block_size;
|
|
@@ -791,7 +792,7 @@ static struct dm_cache_metadata *lookup(struct block_device *bdev)
|
|
|
|
|
|
list_for_each_entry(cmd, &table, list)
|
|
|
if (cmd->bdev == bdev) {
|
|
|
- atomic_inc(&cmd->ref_count);
|
|
|
+ refcount_inc(&cmd->ref_count);
|
|
|
return cmd;
|
|
|
}
|
|
|
|
|
@@ -862,7 +863,7 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
|
|
|
|
|
|
void dm_cache_metadata_close(struct dm_cache_metadata *cmd)
|
|
|
{
|
|
|
- if (atomic_dec_and_test(&cmd->ref_count)) {
|
|
|
+ if (refcount_dec_and_test(&cmd->ref_count)) {
|
|
|
mutex_lock(&table_lock);
|
|
|
list_del(&cmd->list);
|
|
|
mutex_unlock(&table_lock);
|