From: Joe Thornber dm thin metadata: stop tracking whether a commit is needed Remove an optimisation. If dm_pool_commit_metadata() is called and no changes have been made to the metadata then this optimisation avoided writing to disk. Removing because we're going to do something better later. Signed-off-by: Joe Thornber Signed-off-by: Mike Snitzer --- drivers/md/dm-thin-metadata.c | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) Index: linux-3.5-rc7/drivers/md/dm-thin-metadata.c =================================================================== --- linux-3.5-rc7.orig/drivers/md/dm-thin-metadata.c +++ linux-3.5-rc7/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_metad 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 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(struc list_del(&td->list); kfree(td); } - - pmd->need_commit = 1; } return 0; @@ -599,9 +590,6 @@ static int __commit_transaction(struct d 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 d 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_metadat } 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_poo if (r) return r; - pmd->need_commit = 1; - return 0; } @@ -1066,7 +1049,6 @@ int dm_pool_set_metadata_transaction_id( } 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(struc 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(struc &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(struc 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_devic 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_devic td->mapped_blocks--; td->changed = 1; - pmd->need_commit = 1; return 0; } @@ -1374,10 +1347,7 @@ int dm_pool_alloc_data_block(struct dm_p 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_p 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)