• Home
  • Raw
  • Download

Lines Matching refs:dmap

131 	struct fuse_dax_mapping *dmap;  in alloc_dax_mapping()  local
134 dmap = list_first_entry_or_null(&fcd->free_ranges, in alloc_dax_mapping()
136 if (dmap) { in alloc_dax_mapping()
137 list_del_init(&dmap->list); in alloc_dax_mapping()
144 return dmap; in alloc_dax_mapping()
149 struct fuse_dax_mapping *dmap) in __dmap_remove_busy_list() argument
151 list_del_init(&dmap->busy_list); in __dmap_remove_busy_list()
157 struct fuse_dax_mapping *dmap) in dmap_remove_busy_list() argument
160 __dmap_remove_busy_list(fcd, dmap); in dmap_remove_busy_list()
166 struct fuse_dax_mapping *dmap) in __dmap_add_to_free_pool() argument
168 list_add_tail(&dmap->list, &fcd->free_ranges); in __dmap_add_to_free_pool()
174 struct fuse_dax_mapping *dmap) in dmap_add_to_free_pool() argument
178 __dmap_add_to_free_pool(fcd, dmap); in dmap_add_to_free_pool()
183 struct fuse_dax_mapping *dmap, bool writable, in fuse_setup_one_mapping() argument
200 inarg.moffset = dmap->window_offset; in fuse_setup_one_mapping()
213 dmap->writable = writable; in fuse_setup_one_mapping()
220 dmap->inode = inode; in fuse_setup_one_mapping()
221 dmap->itn.start = dmap->itn.last = start_idx; in fuse_setup_one_mapping()
223 interval_tree_insert(&dmap->itn, &fi->dax->tree); in fuse_setup_one_mapping()
226 list_add_tail(&dmap->busy_list, &fcd->busy_ranges); in fuse_setup_one_mapping()
256 struct fuse_dax_mapping *dmap; in dmap_removemapping_list() local
265 list_for_each_entry(dmap, to_remove, list) { in dmap_removemapping_list()
266 ptr->moffset = dmap->window_offset; in dmap_removemapping_list()
267 ptr->len = dmap->length; in dmap_removemapping_list()
292 struct fuse_dax_mapping *dmap) in dmap_reinit_add_to_free_pool() argument
295 dmap->itn.start, dmap->itn.last, dmap->window_offset, in dmap_reinit_add_to_free_pool()
296 dmap->length); in dmap_reinit_add_to_free_pool()
297 __dmap_remove_busy_list(fcd, dmap); in dmap_reinit_add_to_free_pool()
298 dmap->inode = NULL; in dmap_reinit_add_to_free_pool()
299 dmap->itn.start = dmap->itn.last = 0; in dmap_reinit_add_to_free_pool()
300 __dmap_add_to_free_pool(fcd, dmap); in dmap_reinit_add_to_free_pool()
314 struct fuse_dax_mapping *dmap, *n; in inode_reclaim_dmap_range() local
326 dmap = node_to_dmap(node); in inode_reclaim_dmap_range()
328 WARN_ON(refcount_read(&dmap->refcnt) > 1); in inode_reclaim_dmap_range()
329 interval_tree_remove(&dmap->itn, &fi->dax->tree); in inode_reclaim_dmap_range()
331 list_add(&dmap->list, &to_remove); in inode_reclaim_dmap_range()
346 list_for_each_entry_safe(dmap, n, &to_remove, list) { in inode_reclaim_dmap_range()
347 list_del_init(&dmap->list); in inode_reclaim_dmap_range()
348 dmap_reinit_add_to_free_pool(fcd, dmap); in inode_reclaim_dmap_range()
354 struct fuse_dax_mapping *dmap) in dmap_removemapping_one() argument
362 forget_one.moffset = dmap->window_offset; in dmap_removemapping_one()
363 forget_one.len = dmap->length; in dmap_removemapping_one()
396 struct iomap *iomap, struct fuse_dax_mapping *dmap, in fuse_fill_iomap() argument
402 offset = pos - (dmap->itn.start << FUSE_DAX_SHIFT); in fuse_fill_iomap()
403 len = min(length, dmap->length - offset); in fuse_fill_iomap()
410 iomap->addr = dmap->window_offset + offset; in fuse_fill_iomap()
420 refcount_inc(&dmap->refcnt); in fuse_fill_iomap()
424 iomap->private = dmap; in fuse_fill_iomap()
438 struct fuse_dax_mapping *dmap, *alloc_dmap = NULL; in fuse_setup_new_dax_mapping() local
479 dmap = node_to_dmap(node); in fuse_setup_new_dax_mapping()
480 fuse_fill_iomap(inode, pos, length, iomap, dmap, flags); in fuse_setup_new_dax_mapping()
504 struct fuse_dax_mapping *dmap; in fuse_upgrade_dax_mapping() local
526 dmap = node_to_dmap(node); in fuse_upgrade_dax_mapping()
532 if (refcount_dec_and_test(&dmap->refcnt)) { in fuse_upgrade_dax_mapping()
542 if (dmap->writable) { in fuse_upgrade_dax_mapping()
547 ret = fuse_setup_one_mapping(inode, pos >> FUSE_DAX_SHIFT, dmap, true, in fuse_upgrade_dax_mapping()
552 fuse_fill_iomap(inode, pos, length, iomap, dmap, flags); in fuse_upgrade_dax_mapping()
567 struct fuse_dax_mapping *dmap; in fuse_iomap_begin() local
591 dmap = node_to_dmap(node); in fuse_iomap_begin()
592 if (writable && !dmap->writable) { in fuse_iomap_begin()
602 refcount_inc(&dmap->refcnt); in fuse_iomap_begin()
609 fuse_fill_iomap(inode, pos, length, iomap, dmap, flags); in fuse_iomap_begin()
639 struct fuse_dax_mapping *dmap = iomap->private; in fuse_iomap_end() local
641 if (dmap) { in fuse_iomap_end()
642 if (refcount_dec_and_test(&dmap->refcnt)) { in fuse_iomap_end()
871 struct fuse_dax_mapping *dmap) in dmap_writeback_invalidate() argument
874 loff_t start_pos = dmap->itn.start << FUSE_DAX_SHIFT; in dmap_writeback_invalidate()
895 struct fuse_dax_mapping *dmap) in reclaim_one_dmap_locked() argument
904 ret = dmap_writeback_invalidate(inode, dmap); in reclaim_one_dmap_locked()
909 interval_tree_remove(&dmap->itn, &fi->dax->tree); in reclaim_one_dmap_locked()
916 ret = dmap_removemapping_one(inode, dmap); in reclaim_one_dmap_locked()
919 dmap->window_offset, dmap->length, ret); in reclaim_one_dmap_locked()
930 struct fuse_dax_mapping *dmap; in inode_lookup_first_dmap() local
935 dmap = node_to_dmap(node); in inode_lookup_first_dmap()
937 if (refcount_read(&dmap->refcnt) > 1) in inode_lookup_first_dmap()
940 return dmap; in inode_lookup_first_dmap()
955 struct fuse_dax_mapping *dmap; in inode_inline_reclaim_one_dmap() local
965 dmap = inode_lookup_first_dmap(inode); in inode_inline_reclaim_one_dmap()
966 if (dmap) { in inode_inline_reclaim_one_dmap()
967 start_idx = dmap->itn.start; in inode_inline_reclaim_one_dmap()
973 if (!dmap) in inode_inline_reclaim_one_dmap()
983 dmap = ERR_PTR(ret); in inode_inline_reclaim_one_dmap()
996 dmap = node_to_dmap(node); in inode_inline_reclaim_one_dmap()
998 if (refcount_read(&dmap->refcnt) > 1) { in inode_inline_reclaim_one_dmap()
999 dmap = NULL; in inode_inline_reclaim_one_dmap()
1005 ret = reclaim_one_dmap_locked(inode, dmap); in inode_inline_reclaim_one_dmap()
1007 dmap = ERR_PTR(ret); in inode_inline_reclaim_one_dmap()
1012 dmap_remove_busy_list(fcd, dmap); in inode_inline_reclaim_one_dmap()
1013 dmap->inode = NULL; in inode_inline_reclaim_one_dmap()
1014 dmap->itn.start = dmap->itn.last = 0; in inode_inline_reclaim_one_dmap()
1017 __func__, inode, dmap->window_offset, dmap->length); in inode_inline_reclaim_one_dmap()
1023 return dmap; in inode_inline_reclaim_one_dmap()
1029 struct fuse_dax_mapping *dmap; in alloc_dax_mapping_reclaim() local
1035 dmap = alloc_dax_mapping(fcd); in alloc_dax_mapping_reclaim()
1036 if (dmap) in alloc_dax_mapping_reclaim()
1037 return dmap; in alloc_dax_mapping_reclaim()
1039 dmap = inode_inline_reclaim_one_dmap(fcd, inode, &retry); in alloc_dax_mapping_reclaim()
1044 if (dmap) in alloc_dax_mapping_reclaim()
1045 return dmap; in alloc_dax_mapping_reclaim()
1080 struct fuse_dax_mapping *dmap; in lookup_and_reclaim_dmap_locked() local
1089 dmap = node_to_dmap(node); in lookup_and_reclaim_dmap_locked()
1092 if (refcount_read(&dmap->refcnt) > 1) in lookup_and_reclaim_dmap_locked()
1095 ret = reclaim_one_dmap_locked(inode, dmap); in lookup_and_reclaim_dmap_locked()
1101 dmap_reinit_add_to_free_pool(fcd, dmap); in lookup_and_reclaim_dmap_locked()
1142 struct fuse_dax_mapping *dmap, *pos, *temp; in try_to_free_dmap_chunks() local
1152 dmap = NULL; in try_to_free_dmap_chunks()
1179 dmap = pos; in try_to_free_dmap_chunks()
1180 list_move_tail(&dmap->busy_list, &fcd->busy_ranges); in try_to_free_dmap_chunks()
1181 start_idx = end_idx = dmap->itn.start; in try_to_free_dmap_chunks()
1185 if (!dmap) in try_to_free_dmap_chunks()