Lines Matching refs:cache_dev
13 static void cache_dev_dax_exit(struct pcache_cache_dev *cache_dev) in cache_dev_dax_exit() argument
15 if (cache_dev->use_vmap) in cache_dev_dax_exit()
16 vunmap(cache_dev->mapping); in cache_dev_dax_exit()
64 static int cache_dev_dax_init(struct pcache_cache_dev *cache_dev) in cache_dev_dax_init() argument
66 struct dm_pcache *pcache = CACHE_DEV_TO_PCACHE(cache_dev); in cache_dev_dax_init()
75 dax_dev = cache_dev->dm_dev->dax_dev; in cache_dev_dax_init()
77 bdev_size = bdev_nr_bytes(cache_dev->dm_dev->bdev); in cache_dev_dax_init()
103 cache_dev->mapping = vaddr; in cache_dev_dax_init()
112 cache_dev->mapping = vaddr; in cache_dev_dax_init()
113 cache_dev->use_vmap = true; in cache_dev_dax_init()
124 void cache_dev_zero_range(struct pcache_cache_dev *cache_dev, void *pos, u32 size) in cache_dev_zero_range() argument
127 dax_flush(cache_dev->dm_dev->dax_dev, pos, size); in cache_dev_zero_range()
130 static int sb_read(struct pcache_cache_dev *cache_dev, struct pcache_sb *sb) in sb_read() argument
132 struct pcache_sb *sb_addr = CACHE_DEV_SB(cache_dev); in sb_read()
140 static void sb_write(struct pcache_cache_dev *cache_dev, struct pcache_sb *sb) in sb_write() argument
142 struct pcache_sb *sb_addr = CACHE_DEV_SB(cache_dev); in sb_write()
148 static int sb_init(struct pcache_cache_dev *cache_dev, struct pcache_sb *sb) in sb_init() argument
150 struct dm_pcache *pcache = CACHE_DEV_TO_PCACHE(cache_dev); in sb_init()
160 cache_dev_size = bdev_nr_bytes(file_bdev(cache_dev->dm_dev->bdev_file)); in sb_init()
177 cache_dev_zero_range(cache_dev, CACHE_DEV_CACHE_INFO(cache_dev), in sb_init()
184 static int sb_validate(struct pcache_cache_dev *cache_dev, struct pcache_sb *sb) in sb_validate() argument
186 struct dm_pcache *pcache = CACHE_DEV_TO_PCACHE(cache_dev); in sb_validate()
217 static int cache_dev_init(struct pcache_cache_dev *cache_dev, u32 seg_num) in cache_dev_init() argument
219 cache_dev->seg_num = seg_num; in cache_dev_init()
220 …cache_dev->seg_bitmap = kvcalloc(BITS_TO_LONGS(cache_dev->seg_num), sizeof(unsigned long), GFP_KER… in cache_dev_init()
221 if (!cache_dev->seg_bitmap) in cache_dev_init()
227 static void cache_dev_exit(struct pcache_cache_dev *cache_dev) in cache_dev_exit() argument
229 kvfree(cache_dev->seg_bitmap); in cache_dev_exit()
234 struct pcache_cache_dev *cache_dev = &pcache->cache_dev; in cache_dev_stop() local
236 cache_dev_exit(cache_dev); in cache_dev_stop()
237 cache_dev_dax_exit(cache_dev); in cache_dev_stop()
242 struct pcache_cache_dev *cache_dev = &pcache->cache_dev; in cache_dev_start() local
247 mutex_init(&cache_dev->seg_lock); in cache_dev_start()
249 ret = cache_dev_dax_init(cache_dev); in cache_dev_start()
252 cache_dev->dm_dev->name, ret); in cache_dev_start()
256 ret = sb_read(cache_dev, &sb); in cache_dev_start()
262 ret = sb_init(cache_dev, &sb); in cache_dev_start()
267 ret = sb_validate(cache_dev, &sb); in cache_dev_start()
271 cache_dev->sb_flags = le32_to_cpu(sb.flags); in cache_dev_start()
272 ret = cache_dev_init(cache_dev, le32_to_cpu(sb.seg_num)); in cache_dev_start()
277 sb_write(cache_dev, &sb); in cache_dev_start()
282 cache_dev_dax_exit(cache_dev); in cache_dev_start()
287 int cache_dev_get_empty_segment_id(struct pcache_cache_dev *cache_dev, u32 *seg_id) in cache_dev_get_empty_segment_id() argument
291 mutex_lock(&cache_dev->seg_lock); in cache_dev_get_empty_segment_id()
292 *seg_id = find_next_zero_bit(cache_dev->seg_bitmap, cache_dev->seg_num, 0); in cache_dev_get_empty_segment_id()
293 if (*seg_id == cache_dev->seg_num) { in cache_dev_get_empty_segment_id()
298 __set_bit(*seg_id, cache_dev->seg_bitmap); in cache_dev_get_empty_segment_id()
301 mutex_unlock(&cache_dev->seg_lock); in cache_dev_get_empty_segment_id()