From c90ed323e347c528fa74cab37ca23a5fa9f199fb Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Thu, 12 Jul 2012 12:02:22 +0100 Subject: [PATCH 29/34] dm thin metadata: introduce dm_thin_changed_this_transaction Publish a useful bit of information we're already tracking. This will help dm thin decide when to commit. Signed-off-by: Joe Thornber Signed-off-by: Mike Snitzer --- drivers/md/dm-thin-metadata.c | 16 +++++++++++++--- drivers/md/dm-thin-metadata.h | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) Index: linux-2.6/drivers/md/dm-thin-metadata.c =================================================================== --- linux-2.6.orig/drivers/md/dm-thin-metadata.c +++ linux-2.6/drivers/md/dm-thin-metadata.c @@ -1379,10 +1379,9 @@ static int __insert(struct dm_thin_devic if (r) return r; - if (inserted) { + td->changed = 1; + if (inserted) td->mapped_blocks++; - td->changed = 1; - } return 0; } @@ -1426,6 +1425,17 @@ int dm_thin_remove_block(struct dm_thin_ return r; } +bool dm_thin_changed_this_transaction(struct dm_thin_device *td) +{ + int r; + + down_read(&td->pmd->root_lock); + r = td->changed; + up_read(&td->pmd->root_lock); + + return r; +} + int dm_pool_alloc_data_block(struct dm_pool_metadata *pmd, dm_block_t *result) { int r; Index: linux-2.6/drivers/md/dm-thin-metadata.h =================================================================== --- linux-2.6.orig/drivers/md/dm-thin-metadata.h +++ linux-2.6/drivers/md/dm-thin-metadata.h @@ -153,6 +153,8 @@ int dm_thin_remove_block(struct dm_thin_ /* * Queries. */ +bool dm_thin_changed_this_transaction(struct dm_thin_device *td); + int dm_thin_get_highest_mapped_block(struct dm_thin_device *td, dm_block_t *highest_mapped);