diff options
Diffstat (limited to 'drivers/md/dm-cache-metadata.c')
| -rw-r--r-- | drivers/md/dm-cache-metadata.c | 64 |
1 files changed, 24 insertions, 40 deletions
diff --git a/drivers/md/dm-cache-metadata.c b/drivers/md/dm-cache-metadata.c index 3970cda10080..27f2ef300f8b 100644 --- a/drivers/md/dm-cache-metadata.c +++ b/drivers/md/dm-cache-metadata.c @@ -867,55 +867,39 @@ static int blocks_are_unmapped_or_clean(struct dm_cache_metadata *cmd, return 0; } -static bool cmd_write_lock(struct dm_cache_metadata *cmd) -{ - down_write(&cmd->root_lock); - if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { - up_write(&cmd->root_lock); - return false; +#define WRITE_LOCK(cmd) \ + down_write(&cmd->root_lock); \ + if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { \ + up_write(&cmd->root_lock); \ + return -EINVAL; \ } - return true; -} - -#define WRITE_LOCK(cmd) \ - do { \ - if (!cmd_write_lock((cmd))) \ - return -EINVAL; \ - } while(0) -#define WRITE_LOCK_VOID(cmd) \ - do { \ - if (!cmd_write_lock((cmd))) \ - return; \ - } while(0) +#define WRITE_LOCK_VOID(cmd) \ + down_write(&cmd->root_lock); \ + if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { \ + up_write(&cmd->root_lock); \ + return; \ + } #define WRITE_UNLOCK(cmd) \ - up_write(&(cmd)->root_lock) + up_write(&cmd->root_lock) -static bool cmd_read_lock(struct dm_cache_metadata *cmd) -{ - down_read(&cmd->root_lock); - if (cmd->fail_io) { - up_read(&cmd->root_lock); - return false; +#define READ_LOCK(cmd) \ + down_read(&cmd->root_lock); \ + if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { \ + up_read(&cmd->root_lock); \ + return -EINVAL; \ } - return true; -} - -#define READ_LOCK(cmd) \ - do { \ - if (!cmd_read_lock((cmd))) \ - return -EINVAL; \ - } while(0) -#define READ_LOCK_VOID(cmd) \ - do { \ - if (!cmd_read_lock((cmd))) \ - return; \ - } while(0) +#define READ_LOCK_VOID(cmd) \ + down_read(&cmd->root_lock); \ + if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { \ + up_read(&cmd->root_lock); \ + return; \ + } #define READ_UNLOCK(cmd) \ - up_read(&(cmd)->root_lock) + up_read(&cmd->root_lock) int dm_cache_resize(struct dm_cache_metadata *cmd, dm_cblock_t new_cache_size) { |
