Lines Matching refs:dmap

127 	struct dirty_map dmap[2];  member
473 static int __dirty_map_init(struct dirty_map *dmap, unsigned long nr_words, in __dirty_map_init() argument
476 dmap->changed = 0; in __dirty_map_init()
478 dmap->dirty_words = kvzalloc(bitmap_size(nr_words), GFP_KERNEL); in __dirty_map_init()
479 if (!dmap->dirty_words) in __dirty_map_init()
482 dmap->dirty_regions = kvzalloc(bitmap_size(nr_regions), GFP_KERNEL); in __dirty_map_init()
483 if (!dmap->dirty_regions) { in __dirty_map_init()
484 kvfree(dmap->dirty_words); in __dirty_map_init()
491 static void __dirty_map_exit(struct dirty_map *dmap) in __dirty_map_exit() argument
493 kvfree(dmap->dirty_words); in __dirty_map_exit()
494 kvfree(dmap->dirty_regions); in __dirty_map_exit()
499 if (__dirty_map_init(&cmd->dmap[0], cmd->nr_words, cmd->nr_regions)) { in dirty_map_init()
504 if (__dirty_map_init(&cmd->dmap[1], cmd->nr_words, cmd->nr_regions)) { in dirty_map_init()
506 __dirty_map_exit(&cmd->dmap[0]); in dirty_map_init()
510 cmd->current_dmap = &cmd->dmap[0]; in dirty_map_init()
518 __dirty_map_exit(&cmd->dmap[0]); in dirty_map_exit()
519 __dirty_map_exit(&cmd->dmap[1]); in dirty_map_exit()
742 static int __flush_dmap(struct dm_clone_metadata *cmd, struct dirty_map *dmap) in __flush_dmap() argument
749 word = find_next_bit(dmap->dirty_words, cmd->nr_words, word); in __flush_dmap()
754 r = __update_metadata_word(cmd, dmap->dirty_regions, word); in __flush_dmap()
759 __clear_bit(word, dmap->dirty_words); in __flush_dmap()
770 dmap->changed = 0; in __flush_dmap()
779 struct dirty_map *dmap, *next_dmap; in dm_clone_metadata_pre_commit() local
789 dmap = cmd->current_dmap; in dm_clone_metadata_pre_commit()
792 next_dmap = (dmap == &cmd->dmap[0]) ? &cmd->dmap[1] : &cmd->dmap[0]; in dm_clone_metadata_pre_commit()
809 cmd->committing_dmap = dmap; in dm_clone_metadata_pre_commit()
844 struct dirty_map *dmap; in dm_clone_set_region_hydrated() local
862 dmap = cmd->current_dmap; in dm_clone_set_region_hydrated()
864 __set_bit(word, dmap->dirty_words); in dm_clone_set_region_hydrated()
865 __set_bit(region_nr, dmap->dirty_regions); in dm_clone_set_region_hydrated()
867 dmap->changed = 1; in dm_clone_set_region_hydrated()
879 struct dirty_map *dmap; in dm_clone_cond_set_range() local
896 dmap = cmd->current_dmap; in dm_clone_cond_set_range()
900 __set_bit(word, dmap->dirty_words); in dm_clone_cond_set_range()
901 __set_bit(region_nr, dmap->dirty_regions); in dm_clone_cond_set_range()
903 dmap->changed = 1; in dm_clone_cond_set_range()
944 r = cmd->dmap[0].changed || cmd->dmap[1].changed; in dm_clone_changed_this_transaction()