Loading drivers/md/dm-cache-target.c +16 −16 Original line number Diff line number Diff line Loading @@ -515,19 +515,19 @@ struct dm_cache_migration { /*----------------------------------------------------------------*/ static bool writethrough_mode(struct cache_features *f) static bool writethrough_mode(struct cache *cache) { return f->io_mode == CM_IO_WRITETHROUGH; return cache->features.io_mode == CM_IO_WRITETHROUGH; } static bool writeback_mode(struct cache_features *f) static bool writeback_mode(struct cache *cache) { return f->io_mode == CM_IO_WRITEBACK; return cache->features.io_mode == CM_IO_WRITEBACK; } static inline bool passthrough_mode(struct cache_features *f) static inline bool passthrough_mode(struct cache *cache) { return unlikely(f->io_mode == CM_IO_PASSTHROUGH); return unlikely(cache->features.io_mode == CM_IO_PASSTHROUGH); } /*----------------------------------------------------------------*/ Loading @@ -544,7 +544,7 @@ static void wake_deferred_writethrough_worker(struct cache *cache) static void wake_migration_worker(struct cache *cache) { if (passthrough_mode(&cache->features)) if (passthrough_mode(cache)) return; queue_work(cache->wq, &cache->migration_worker); Loading Loading @@ -626,7 +626,7 @@ static unsigned lock_level(struct bio *bio) static size_t get_per_bio_data_size(struct cache *cache) { return writethrough_mode(&cache->features) ? PB_DATA_SIZE_WT : PB_DATA_SIZE_WB; return writethrough_mode(cache) ? PB_DATA_SIZE_WT : PB_DATA_SIZE_WB; } static struct per_bio_data *get_per_bio_data(struct bio *bio, size_t data_size) Loading Loading @@ -1209,7 +1209,7 @@ static bool bio_writes_complete_block(struct cache *cache, struct bio *bio) static bool optimisable_bio(struct cache *cache, struct bio *bio, dm_oblock_t block) { return writeback_mode(&cache->features) && return writeback_mode(cache) && (is_discarded_oblock(cache, block) || bio_writes_complete_block(cache, bio)); } Loading Loading @@ -1862,7 +1862,7 @@ static int map_bio(struct cache *cache, struct bio *bio, dm_oblock_t block, * Passthrough always maps to the origin, invalidating any * cache blocks that are written to. */ if (passthrough_mode(&cache->features)) { if (passthrough_mode(cache)) { if (bio_data_dir(bio) == WRITE) { bio_drop_shared_lock(cache, bio); atomic_inc(&cache->stats.demotion); Loading @@ -1871,7 +1871,7 @@ static int map_bio(struct cache *cache, struct bio *bio, dm_oblock_t block, remap_to_origin_clear_discard(cache, bio, block); } else { if (bio_data_dir(bio) == WRITE && writethrough_mode(&cache->features) && if (bio_data_dir(bio) == WRITE && writethrough_mode(cache) && !is_dirty(cache, cblock)) { remap_to_origin_then_cache(cache, bio, block, cblock); accounted_begin(cache, bio); Loading Loading @@ -2638,7 +2638,7 @@ static int cache_create(struct cache_args *ca, struct cache **result) goto bad; } if (passthrough_mode(&cache->features)) { if (passthrough_mode(cache)) { bool all_clean; r = dm_cache_metadata_all_clean(cache->cmd, &all_clean); Loading Loading @@ -3263,13 +3263,13 @@ static void cache_status(struct dm_target *ti, status_type_t type, else DMEMIT("1 "); if (writethrough_mode(&cache->features)) if (writethrough_mode(cache)) DMEMIT("writethrough "); else if (passthrough_mode(&cache->features)) else if (passthrough_mode(cache)) DMEMIT("passthrough "); else if (writeback_mode(&cache->features)) else if (writeback_mode(cache)) DMEMIT("writeback "); else { Loading Loading @@ -3435,7 +3435,7 @@ static int process_invalidate_cblocks_message(struct cache *cache, unsigned coun unsigned i; struct cblock_range range; if (!passthrough_mode(&cache->features)) { if (!passthrough_mode(cache)) { DMERR("%s: cache has to be in passthrough mode for invalidation", cache_device_name(cache)); return -EPERM; Loading Loading
drivers/md/dm-cache-target.c +16 −16 Original line number Diff line number Diff line Loading @@ -515,19 +515,19 @@ struct dm_cache_migration { /*----------------------------------------------------------------*/ static bool writethrough_mode(struct cache_features *f) static bool writethrough_mode(struct cache *cache) { return f->io_mode == CM_IO_WRITETHROUGH; return cache->features.io_mode == CM_IO_WRITETHROUGH; } static bool writeback_mode(struct cache_features *f) static bool writeback_mode(struct cache *cache) { return f->io_mode == CM_IO_WRITEBACK; return cache->features.io_mode == CM_IO_WRITEBACK; } static inline bool passthrough_mode(struct cache_features *f) static inline bool passthrough_mode(struct cache *cache) { return unlikely(f->io_mode == CM_IO_PASSTHROUGH); return unlikely(cache->features.io_mode == CM_IO_PASSTHROUGH); } /*----------------------------------------------------------------*/ Loading @@ -544,7 +544,7 @@ static void wake_deferred_writethrough_worker(struct cache *cache) static void wake_migration_worker(struct cache *cache) { if (passthrough_mode(&cache->features)) if (passthrough_mode(cache)) return; queue_work(cache->wq, &cache->migration_worker); Loading Loading @@ -626,7 +626,7 @@ static unsigned lock_level(struct bio *bio) static size_t get_per_bio_data_size(struct cache *cache) { return writethrough_mode(&cache->features) ? PB_DATA_SIZE_WT : PB_DATA_SIZE_WB; return writethrough_mode(cache) ? PB_DATA_SIZE_WT : PB_DATA_SIZE_WB; } static struct per_bio_data *get_per_bio_data(struct bio *bio, size_t data_size) Loading Loading @@ -1209,7 +1209,7 @@ static bool bio_writes_complete_block(struct cache *cache, struct bio *bio) static bool optimisable_bio(struct cache *cache, struct bio *bio, dm_oblock_t block) { return writeback_mode(&cache->features) && return writeback_mode(cache) && (is_discarded_oblock(cache, block) || bio_writes_complete_block(cache, bio)); } Loading Loading @@ -1862,7 +1862,7 @@ static int map_bio(struct cache *cache, struct bio *bio, dm_oblock_t block, * Passthrough always maps to the origin, invalidating any * cache blocks that are written to. */ if (passthrough_mode(&cache->features)) { if (passthrough_mode(cache)) { if (bio_data_dir(bio) == WRITE) { bio_drop_shared_lock(cache, bio); atomic_inc(&cache->stats.demotion); Loading @@ -1871,7 +1871,7 @@ static int map_bio(struct cache *cache, struct bio *bio, dm_oblock_t block, remap_to_origin_clear_discard(cache, bio, block); } else { if (bio_data_dir(bio) == WRITE && writethrough_mode(&cache->features) && if (bio_data_dir(bio) == WRITE && writethrough_mode(cache) && !is_dirty(cache, cblock)) { remap_to_origin_then_cache(cache, bio, block, cblock); accounted_begin(cache, bio); Loading Loading @@ -2638,7 +2638,7 @@ static int cache_create(struct cache_args *ca, struct cache **result) goto bad; } if (passthrough_mode(&cache->features)) { if (passthrough_mode(cache)) { bool all_clean; r = dm_cache_metadata_all_clean(cache->cmd, &all_clean); Loading Loading @@ -3263,13 +3263,13 @@ static void cache_status(struct dm_target *ti, status_type_t type, else DMEMIT("1 "); if (writethrough_mode(&cache->features)) if (writethrough_mode(cache)) DMEMIT("writethrough "); else if (passthrough_mode(&cache->features)) else if (passthrough_mode(cache)) DMEMIT("passthrough "); else if (writeback_mode(&cache->features)) else if (writeback_mode(cache)) DMEMIT("writeback "); else { Loading Loading @@ -3435,7 +3435,7 @@ static int process_invalidate_cblocks_message(struct cache *cache, unsigned coun unsigned i; struct cblock_range range; if (!passthrough_mode(&cache->features)) { if (!passthrough_mode(cache)) { DMERR("%s: cache has to be in passthrough mode for invalidation", cache_device_name(cache)); return -EPERM; Loading