Lines Matching refs:dmap

130 	struct fuse_dax_mapping *dmap;  in alloc_dax_mapping()  local
133 dmap = list_first_entry_or_null(&fcd->free_ranges, in alloc_dax_mapping()
135 if (dmap) { in alloc_dax_mapping()
136 list_del_init(&dmap->list); in alloc_dax_mapping()
143 return dmap; in alloc_dax_mapping()
148 struct fuse_dax_mapping *dmap) in __dmap_remove_busy_list() argument
150 list_del_init(&dmap->busy_list); in __dmap_remove_busy_list()
156 struct fuse_dax_mapping *dmap) in dmap_remove_busy_list() argument
159 __dmap_remove_busy_list(fcd, dmap); in dmap_remove_busy_list()
165 struct fuse_dax_mapping *dmap) in __dmap_add_to_free_pool() argument
167 list_add_tail(&dmap->list, &fcd->free_ranges); in __dmap_add_to_free_pool()
173 struct fuse_dax_mapping *dmap) in dmap_add_to_free_pool() argument
177 __dmap_add_to_free_pool(fcd, dmap); in dmap_add_to_free_pool()
182 struct fuse_dax_mapping *dmap, bool writable, in fuse_setup_one_mapping() argument
199 inarg.moffset = dmap->window_offset; in fuse_setup_one_mapping()
212 dmap->writable = writable; in fuse_setup_one_mapping()
219 dmap->inode = inode; in fuse_setup_one_mapping()
220 dmap->itn.start = dmap->itn.last = start_idx; in fuse_setup_one_mapping()
222 interval_tree_insert(&dmap->itn, &fi->dax->tree); in fuse_setup_one_mapping()
225 list_add_tail(&dmap->busy_list, &fcd->busy_ranges); in fuse_setup_one_mapping()
255 struct fuse_dax_mapping *dmap; in dmap_removemapping_list() local
264 list_for_each_entry(dmap, to_remove, list) { in dmap_removemapping_list()
265 ptr->moffset = dmap->window_offset; in dmap_removemapping_list()
266 ptr->len = dmap->length; in dmap_removemapping_list()
291 struct fuse_dax_mapping *dmap) in dmap_reinit_add_to_free_pool() argument
294 dmap->itn.start, dmap->itn.last, dmap->window_offset, in dmap_reinit_add_to_free_pool()
295 dmap->length); in dmap_reinit_add_to_free_pool()
296 __dmap_remove_busy_list(fcd, dmap); in dmap_reinit_add_to_free_pool()
297 dmap->inode = NULL; in dmap_reinit_add_to_free_pool()
298 dmap->itn.start = dmap->itn.last = 0; in dmap_reinit_add_to_free_pool()
299 __dmap_add_to_free_pool(fcd, dmap); in dmap_reinit_add_to_free_pool()
313 struct fuse_dax_mapping *dmap, *n; in inode_reclaim_dmap_range() local
325 dmap = node_to_dmap(node); in inode_reclaim_dmap_range()
327 WARN_ON(refcount_read(&dmap->refcnt) > 1); in inode_reclaim_dmap_range()
328 interval_tree_remove(&dmap->itn, &fi->dax->tree); in inode_reclaim_dmap_range()
330 list_add(&dmap->list, &to_remove); in inode_reclaim_dmap_range()
345 list_for_each_entry_safe(dmap, n, &to_remove, list) { in inode_reclaim_dmap_range()
346 list_del_init(&dmap->list); in inode_reclaim_dmap_range()
347 dmap_reinit_add_to_free_pool(fcd, dmap); in inode_reclaim_dmap_range()
353 struct fuse_dax_mapping *dmap) in dmap_removemapping_one() argument
361 forget_one.moffset = dmap->window_offset; in dmap_removemapping_one()
362 forget_one.len = dmap->length; in dmap_removemapping_one()
395 struct iomap *iomap, struct fuse_dax_mapping *dmap, in fuse_fill_iomap() argument
401 offset = pos - (dmap->itn.start << FUSE_DAX_SHIFT); in fuse_fill_iomap()
402 len = min(length, dmap->length - offset); in fuse_fill_iomap()
409 iomap->addr = dmap->window_offset + offset; in fuse_fill_iomap()
419 refcount_inc(&dmap->refcnt); in fuse_fill_iomap()
423 iomap->private = dmap; in fuse_fill_iomap()
437 struct fuse_dax_mapping *dmap, *alloc_dmap = NULL; in fuse_setup_new_dax_mapping() local
478 dmap = node_to_dmap(node); in fuse_setup_new_dax_mapping()
479 fuse_fill_iomap(inode, pos, length, iomap, dmap, flags); in fuse_setup_new_dax_mapping()
503 struct fuse_dax_mapping *dmap; in fuse_upgrade_dax_mapping() local
525 dmap = node_to_dmap(node); in fuse_upgrade_dax_mapping()
531 if (refcount_dec_and_test(&dmap->refcnt)) { in fuse_upgrade_dax_mapping()
541 if (dmap->writable) { in fuse_upgrade_dax_mapping()
546 ret = fuse_setup_one_mapping(inode, pos >> FUSE_DAX_SHIFT, dmap, true, in fuse_upgrade_dax_mapping()
551 fuse_fill_iomap(inode, pos, length, iomap, dmap, flags); in fuse_upgrade_dax_mapping()
566 struct fuse_dax_mapping *dmap; in fuse_iomap_begin() local
590 dmap = node_to_dmap(node); in fuse_iomap_begin()
591 if (writable && !dmap->writable) { in fuse_iomap_begin()
601 refcount_inc(&dmap->refcnt); in fuse_iomap_begin()
608 fuse_fill_iomap(inode, pos, length, iomap, dmap, flags); in fuse_iomap_begin()
638 struct fuse_dax_mapping *dmap = iomap->private; in fuse_iomap_end() local
640 if (dmap) { in fuse_iomap_end()
641 if (refcount_dec_and_test(&dmap->refcnt)) { in fuse_iomap_end()
872 struct fuse_dax_mapping *dmap) in dmap_writeback_invalidate() argument
875 loff_t start_pos = dmap->itn.start << FUSE_DAX_SHIFT; in dmap_writeback_invalidate()
896 struct fuse_dax_mapping *dmap) in reclaim_one_dmap_locked() argument
905 ret = dmap_writeback_invalidate(inode, dmap); in reclaim_one_dmap_locked()
910 interval_tree_remove(&dmap->itn, &fi->dax->tree); in reclaim_one_dmap_locked()
917 ret = dmap_removemapping_one(inode, dmap); in reclaim_one_dmap_locked()
920 dmap->window_offset, dmap->length, ret); in reclaim_one_dmap_locked()
931 struct fuse_dax_mapping *dmap; in inode_lookup_first_dmap() local
936 dmap = node_to_dmap(node); in inode_lookup_first_dmap()
938 if (refcount_read(&dmap->refcnt) > 1) in inode_lookup_first_dmap()
941 return dmap; in inode_lookup_first_dmap()
956 struct fuse_dax_mapping *dmap; in inode_inline_reclaim_one_dmap() local
966 dmap = inode_lookup_first_dmap(inode); in inode_inline_reclaim_one_dmap()
967 if (dmap) { in inode_inline_reclaim_one_dmap()
968 start_idx = dmap->itn.start; in inode_inline_reclaim_one_dmap()
974 if (!dmap) in inode_inline_reclaim_one_dmap()
984 dmap = ERR_PTR(ret); in inode_inline_reclaim_one_dmap()
997 dmap = node_to_dmap(node); in inode_inline_reclaim_one_dmap()
999 if (refcount_read(&dmap->refcnt) > 1) { in inode_inline_reclaim_one_dmap()
1000 dmap = NULL; in inode_inline_reclaim_one_dmap()
1006 ret = reclaim_one_dmap_locked(inode, dmap); in inode_inline_reclaim_one_dmap()
1008 dmap = ERR_PTR(ret); in inode_inline_reclaim_one_dmap()
1013 dmap_remove_busy_list(fcd, dmap); in inode_inline_reclaim_one_dmap()
1014 dmap->inode = NULL; in inode_inline_reclaim_one_dmap()
1015 dmap->itn.start = dmap->itn.last = 0; in inode_inline_reclaim_one_dmap()
1018 __func__, inode, dmap->window_offset, dmap->length); in inode_inline_reclaim_one_dmap()
1024 return dmap; in inode_inline_reclaim_one_dmap()
1030 struct fuse_dax_mapping *dmap; in alloc_dax_mapping_reclaim() local
1036 dmap = alloc_dax_mapping(fcd); in alloc_dax_mapping_reclaim()
1037 if (dmap) in alloc_dax_mapping_reclaim()
1038 return dmap; in alloc_dax_mapping_reclaim()
1040 dmap = inode_inline_reclaim_one_dmap(fcd, inode, &retry); in alloc_dax_mapping_reclaim()
1045 if (dmap) in alloc_dax_mapping_reclaim()
1046 return dmap; in alloc_dax_mapping_reclaim()
1081 struct fuse_dax_mapping *dmap; in lookup_and_reclaim_dmap_locked() local
1090 dmap = node_to_dmap(node); in lookup_and_reclaim_dmap_locked()
1093 if (refcount_read(&dmap->refcnt) > 1) in lookup_and_reclaim_dmap_locked()
1096 ret = reclaim_one_dmap_locked(inode, dmap); in lookup_and_reclaim_dmap_locked()
1102 dmap_reinit_add_to_free_pool(fcd, dmap); in lookup_and_reclaim_dmap_locked()
1143 struct fuse_dax_mapping *dmap, *pos, *temp; in try_to_free_dmap_chunks() local
1153 dmap = NULL; in try_to_free_dmap_chunks()
1180 dmap = pos; in try_to_free_dmap_chunks()
1181 list_move_tail(&dmap->busy_list, &fcd->busy_ranges); in try_to_free_dmap_chunks()
1182 start_idx = end_idx = dmap->itn.start; in try_to_free_dmap_chunks()
1186 if (!dmap) in try_to_free_dmap_chunks()