aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-cache-policy.h
diff options
context:
space:
mode:
authorJoe Thornber <ejt@redhat.com>2013-11-08 11:36:17 -0500
committerMike Snitzer <snitzer@redhat.com>2013-11-11 11:37:50 -0500
commit532906aa7f9656209f30f08dfadd328fc1bc6912 (patch)
treed8af8f44e38894c97a0d891152723d5b7184edc5 /drivers/md/dm-cache-policy.h
parent633618e3353f8953e43d989d08302f5dcd51d8be (diff)
dm cache: add remove_cblock method to policy interface
Implement policy_remove_cblock() and add remove_cblock method to the mq policy. These methods will be used by the following cache block invalidation patch which adds the 'invalidate_cblocks' message to the cache core. Also, update some comments in dm-cache-policy.h Signed-off-by: Joe Thornber <ejt@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-cache-policy.h')
-rw-r--r--drivers/md/dm-cache-policy.h21
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/md/dm-cache-policy.h b/drivers/md/dm-cache-policy.h
index 33369ca9614f..052c00a84a5c 100644
--- a/drivers/md/dm-cache-policy.h
+++ b/drivers/md/dm-cache-policy.h
@@ -135,9 +135,6 @@ struct dm_cache_policy {
135 */ 135 */
136 int (*lookup)(struct dm_cache_policy *p, dm_oblock_t oblock, dm_cblock_t *cblock); 136 int (*lookup)(struct dm_cache_policy *p, dm_oblock_t oblock, dm_cblock_t *cblock);
137 137
138 /*
139 * oblock must be a mapped block. Must not block.
140 */
141 void (*set_dirty)(struct dm_cache_policy *p, dm_oblock_t oblock); 138 void (*set_dirty)(struct dm_cache_policy *p, dm_oblock_t oblock);
142 void (*clear_dirty)(struct dm_cache_policy *p, dm_oblock_t oblock); 139 void (*clear_dirty)(struct dm_cache_policy *p, dm_oblock_t oblock);
143 140
@@ -159,8 +156,24 @@ struct dm_cache_policy {
159 void (*force_mapping)(struct dm_cache_policy *p, dm_oblock_t current_oblock, 156 void (*force_mapping)(struct dm_cache_policy *p, dm_oblock_t current_oblock,
160 dm_oblock_t new_oblock); 157 dm_oblock_t new_oblock);
161 158
162 int (*writeback_work)(struct dm_cache_policy *p, dm_oblock_t *oblock, dm_cblock_t *cblock); 159 /*
160 * This is called via the invalidate_cblocks message. It is
161 * possible the particular cblock has already been removed due to a
162 * write io in passthrough mode. In which case this should return
163 * -ENODATA.
164 */
165 int (*remove_cblock)(struct dm_cache_policy *p, dm_cblock_t cblock);
163 166
167 /*
168 * Provide a dirty block to be written back by the core target.
169 *
170 * Returns:
171 *
172 * 0 and @cblock,@oblock: block to write back provided
173 *
174 * -ENODATA: no dirty blocks available
175 */
176 int (*writeback_work)(struct dm_cache_policy *p, dm_oblock_t *oblock, dm_cblock_t *cblock);
164 177
165 /* 178 /*
166 * How full is the cache? 179 * How full is the cache?