From a9dd853ef1677b8d4166ac102f19d88bd305dde1 Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Tue, 10 Jul 2012 14:24:24 +0100 Subject: [PATCH 10/41] dm thin metadata: stop tracking whether a commit is needed FIXME: because later changes allow for fine-grained per thin tracking of whether a commit is needed? Signed-off-by: Joe Thornber Signed-off-by: Mike Snitzer --- drivers/md/dm-thin-metadata.c | 36 +----------------------------------- 1 files changed, 1 insertions(+), 35 deletions(-) diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c index c858931..ab64515 100644 --- a/drivers/md/dm-thin-metadata.c +++ b/drivers/md/dm-thin-metadata.c @@ -172,7 +172,6 @@ struct dm_pool_metadata { struct rw_semaphore root_lock; uint32_t time; - int need_commit; dm_block_t root; dm_block_t details_root; struct list_head thin_devices; @@ -469,7 +468,6 @@ static int init_pmd(struct dm_pool_metadata *pmd, init_rwsem(&pmd->root_lock); pmd->time = 0; - pmd->need_commit = 0; pmd->details_root = 0; pmd->trans_id = 0; pmd->flags = 0; @@ -494,11 +492,6 @@ static int __begin_transaction(struct dm_pool_metadata *pmd) struct dm_block *sblock; /* - * __maybe_commit_transaction() resets these - */ - WARN_ON(pmd->need_commit); - - /* * We re-read the superblock every time. Shouldn't need to do this * really. */ @@ -573,8 +566,6 @@ static int __write_changed_details(struct dm_pool_metadata *pmd) list_del(&td->list); kfree(td); } - - pmd->need_commit = 1; } return 0; @@ -599,9 +590,6 @@ static int __commit_transaction(struct dm_pool_metadata *pmd) if (r < 0) goto out; - if (!pmd->need_commit) - goto out; - r = dm_sm_commit(pmd->data_sm); if (r < 0) goto out; @@ -641,8 +629,6 @@ static int __commit_transaction(struct dm_pool_metadata *pmd) goto out_locked; r = dm_tm_commit(pmd->tm, sblock); - if (!r) - pmd->need_commit = 0; out: return r; @@ -739,7 +725,6 @@ struct dm_pool_metadata *dm_pool_metadata_open(struct block_device *bdev, } pmd->flags = 0; - pmd->need_commit = 1; r = dm_pool_commit_metadata(pmd); if (r < 0) { DMERR("%s: dm_pool_commit_metadata() failed, error = %d", @@ -1037,8 +1022,6 @@ static int __delete_device(struct dm_pool_metadata *pmd, dm_thin_id dev) if (r) return r; - pmd->need_commit = 1; - return 0; } @@ -1066,7 +1049,6 @@ int dm_pool_set_metadata_transaction_id(struct dm_pool_metadata *pmd, } pmd->trans_id = new_id; - pmd->need_commit = 1; up_write(&pmd->root_lock); return 0; @@ -1108,8 +1090,6 @@ static int __reserve_metadata_snap(struct dm_pool_metadata *pmd) dm_tm_dec(pmd->tm, held_root); dm_tm_unlock(pmd->tm, copy); - pmd->need_commit = 1; - return -EBUSY; } @@ -1135,16 +1115,12 @@ static int __reserve_metadata_snap(struct dm_pool_metadata *pmd) &sb_validator, &sblock); if (r) { dm_tm_dec(pmd->tm, held_root); - pmd->need_commit = 1; return r; } disk_super = dm_block_data(sblock); disk_super->held_root = cpu_to_le64(held_root); dm_bm_unlock(sblock); - - pmd->need_commit = 1; - return 0; } @@ -1174,7 +1150,6 @@ static int __release_metadata_snap(struct dm_pool_metadata *pmd) disk_super = dm_block_data(sblock); held_root = le64_to_cpu(disk_super->held_root); disk_super->held_root = cpu_to_le64(0); - pmd->need_commit = 1; dm_bm_unlock(sblock); @@ -1312,7 +1287,6 @@ static int __insert(struct dm_thin_device *td, dm_block_t block, struct dm_pool_metadata *pmd = td->pmd; dm_block_t keys[2] = { td->id, block }; - pmd->need_commit = 1; value = cpu_to_le64(pack_block_time(data_block, pmd->time)); __dm_bless_for_disk(&value); @@ -1353,7 +1327,6 @@ static int __remove(struct dm_thin_device *td, dm_block_t block) td->mapped_blocks--; td->changed = 1; - pmd->need_commit = 1; return 0; } @@ -1374,10 +1347,7 @@ int dm_pool_alloc_data_block(struct dm_pool_metadata *pmd, dm_block_t *result) int r; down_write(&pmd->root_lock); - r = dm_sm_new_block(pmd->data_sm, result); - pmd->need_commit = 1; - up_write(&pmd->root_lock); return r; @@ -1514,11 +1484,7 @@ static int __resize_data_dev(struct dm_pool_metadata *pmd, dm_block_t new_count) return -EINVAL; } - r = dm_sm_extend(pmd->data_sm, new_count - old_count); - if (!r) - pmd->need_commit = 1; - - return r; + return dm_sm_extend(pmd->data_sm, new_count - old_count); } int dm_pool_resize_data_dev(struct dm_pool_metadata *pmd, dm_block_t new_count) -- 1.7.1