summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-thin-metadata.c
diff options
context:
space:
mode:
authorJoe Thornber <ejt@redhat.com>2013-05-10 15:37:21 +0200
committerAlasdair G Kergon <agk@redhat.com>2013-05-10 15:37:21 +0200
commitac8c3f3df65e487bbcabf274eeeb9cd222f5da1e (patch)
treee1ab6d4662834bbbf248b1ad6224c9b7c3faa15e /drivers/md/dm-thin-metadata.c
parentdm persistent metadata: add space map threshold callback (diff)
downloadlinux-ac8c3f3df65e487bbcabf274eeeb9cd222f5da1e.tar.xz
linux-ac8c3f3df65e487bbcabf274eeeb9cd222f5da1e.zip
dm thin: generate event when metadata threshold passed
Generate a dm event when the amount of remaining thin pool metadata space falls below a certain level. The threshold is taken to be a quarter of the size of the metadata device with a minimum threshold of 4MB. Signed-off-by: Joe Thornber <ejt@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers/md/dm-thin-metadata.c')
-rw-r--r--drivers/md/dm-thin-metadata.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
index f553ed66603c..60bce435f4fa 100644
--- a/drivers/md/dm-thin-metadata.c
+++ b/drivers/md/dm-thin-metadata.c
@@ -1696,3 +1696,17 @@ void dm_pool_metadata_read_only(struct dm_pool_metadata *pmd)
dm_bm_set_read_only(pmd->bm);
up_write(&pmd->root_lock);
}
+
+int dm_pool_register_metadata_threshold(struct dm_pool_metadata *pmd,
+ dm_block_t threshold,
+ dm_sm_threshold_fn fn,
+ void *context)
+{
+ int r;
+
+ down_write(&pmd->root_lock);
+ r = dm_sm_register_threshold_callback(pmd->metadata_sm, threshold, fn, context);
+ up_write(&pmd->root_lock);
+
+ return r;
+}