Lines Matching refs:dzone
185 static int dmz_reclaim_buf(struct dmz_reclaim *zrc, struct dm_zone *dzone) in dmz_reclaim_buf() argument
187 struct dm_zone *bzone = dzone->bzone; in dmz_reclaim_buf()
188 sector_t chunk_block = dzone->wp_block; in dmz_reclaim_buf()
194 dzone->chunk, dmz_id(zmd, bzone), dmz_weight(bzone), in dmz_reclaim_buf()
195 dmz_id(zmd, dzone), dmz_weight(dzone)); in dmz_reclaim_buf()
198 ret = dmz_reclaim_copy(zrc, bzone, dzone); in dmz_reclaim_buf()
205 ret = dmz_merge_valid_blocks(zmd, bzone, dzone, chunk_block); in dmz_reclaim_buf()
211 dmz_unlock_zone_reclaim(dzone); in dmz_reclaim_buf()
224 static int dmz_reclaim_seq_data(struct dmz_reclaim *zrc, struct dm_zone *dzone) in dmz_reclaim_seq_data() argument
226 unsigned int chunk = dzone->chunk; in dmz_reclaim_seq_data()
227 struct dm_zone *bzone = dzone->bzone; in dmz_reclaim_seq_data()
233 chunk, dmz_id(zmd, dzone), dmz_weight(dzone), in dmz_reclaim_seq_data()
237 ret = dmz_reclaim_copy(zrc, dzone, bzone); in dmz_reclaim_seq_data()
244 ret = dmz_merge_valid_blocks(zmd, dzone, bzone, 0); in dmz_reclaim_seq_data()
250 dmz_invalidate_blocks(zmd, dzone, 0, zrc->dev->zone_nr_blocks); in dmz_reclaim_seq_data()
253 dmz_unmap_zone(zmd, dzone); in dmz_reclaim_seq_data()
254 dmz_unlock_zone_reclaim(dzone); in dmz_reclaim_seq_data()
255 dmz_free_zone(zmd, dzone); in dmz_reclaim_seq_data()
269 static int dmz_reclaim_rnd_data(struct dmz_reclaim *zrc, struct dm_zone *dzone) in dmz_reclaim_rnd_data() argument
271 unsigned int chunk = dzone->chunk; in dmz_reclaim_rnd_data()
285 chunk, dmz_id(zmd, dzone), dmz_weight(dzone), in dmz_reclaim_rnd_data()
289 ret = dmz_reclaim_copy(zrc, dzone, szone); in dmz_reclaim_rnd_data()
295 ret = dmz_copy_valid_blocks(zmd, dzone, szone); in dmz_reclaim_rnd_data()
304 dmz_invalidate_blocks(zmd, dzone, 0, zrc->dev->zone_nr_blocks); in dmz_reclaim_rnd_data()
306 dmz_unmap_zone(zmd, dzone); in dmz_reclaim_rnd_data()
307 dmz_unlock_zone_reclaim(dzone); in dmz_reclaim_rnd_data()
308 dmz_free_zone(zmd, dzone); in dmz_reclaim_rnd_data()
321 static void dmz_reclaim_empty(struct dmz_reclaim *zrc, struct dm_zone *dzone) in dmz_reclaim_empty() argument
327 dmz_unmap_zone(zmd, dzone); in dmz_reclaim_empty()
328 dmz_unlock_zone_reclaim(dzone); in dmz_reclaim_empty()
329 dmz_free_zone(zmd, dzone); in dmz_reclaim_empty()
340 struct dm_zone *dzone; in dmz_reclaim() local
346 dzone = dmz_get_zone_for_reclaim(zmd); in dmz_reclaim()
347 if (!dzone) in dmz_reclaim()
352 if (dmz_is_rnd(dzone)) { in dmz_reclaim()
353 if (!dmz_weight(dzone)) { in dmz_reclaim()
355 dmz_reclaim_empty(zrc, dzone); in dmz_reclaim()
362 ret = dmz_reclaim_rnd_data(zrc, dzone); in dmz_reclaim()
364 rzone = dzone; in dmz_reclaim()
367 struct dm_zone *bzone = dzone->bzone; in dmz_reclaim()
374 if (ret == 0 || chunk_block >= dzone->wp_block) { in dmz_reclaim()
379 ret = dmz_reclaim_buf(zrc, dzone); in dmz_reclaim()
387 ret = dmz_reclaim_seq_data(zrc, dzone); in dmz_reclaim()
388 rzone = dzone; in dmz_reclaim()
393 dmz_unlock_zone_reclaim(dzone); in dmz_reclaim()