From: Joe Thornber <ejt@redhat.com>

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 <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
---
 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)
