diff options
author | Joe Thornber <ejt@redhat.com> | 2013-11-08 11:36:17 -0500 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2013-11-11 11:37:50 -0500 |
commit | 532906aa7f9656209f30f08dfadd328fc1bc6912 (patch) | |
tree | d8af8f44e38894c97a0d891152723d5b7184edc5 /drivers/md/dm-cache-policy.h | |
parent | 633618e3353f8953e43d989d08302f5dcd51d8be (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.h | 21 |
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? |