Lines Matching refs:path
25 static int find_name_in_backref(struct btrfs_path *path, const char *name, in find_name_in_backref() argument
36 leaf = path->nodes[0]; in find_name_in_backref()
37 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in find_name_in_backref()
38 ptr = btrfs_item_ptr_offset(leaf, path->slots[0]); in find_name_in_backref()
54 int btrfs_find_name_in_ext_backref(struct btrfs_path *path, u64 ref_objectid, in btrfs_find_name_in_ext_backref() argument
66 leaf = path->nodes[0]; in btrfs_find_name_in_ext_backref()
67 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in btrfs_find_name_in_ext_backref()
68 ptr = btrfs_item_ptr_offset(leaf, path->slots[0]); in btrfs_find_name_in_ext_backref()
98 struct btrfs_path *path, in btrfs_lookup_inode_extref() argument
111 ret = btrfs_search_slot(trans, root, &key, path, ins_len, cow); in btrfs_lookup_inode_extref()
116 if (!btrfs_find_name_in_ext_backref(path, ref_objectid, name, name_len, &extref)) in btrfs_lookup_inode_extref()
127 struct btrfs_path *path; in btrfs_del_inode_extref() local
141 path = btrfs_alloc_path(); in btrfs_del_inode_extref()
142 if (!path) in btrfs_del_inode_extref()
145 path->leave_spinning = 1; in btrfs_del_inode_extref()
147 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in btrfs_del_inode_extref()
158 if (!btrfs_find_name_in_ext_backref(path, ref_objectid, in btrfs_del_inode_extref()
165 leaf = path->nodes[0]; in btrfs_del_inode_extref()
166 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in btrfs_del_inode_extref()
175 ret = btrfs_del_item(trans, root, path); in btrfs_del_inode_extref()
180 item_start = btrfs_item_ptr_offset(leaf, path->slots[0]); in btrfs_del_inode_extref()
185 btrfs_truncate_item(root, path, item_size - del_len, 1); in btrfs_del_inode_extref()
188 btrfs_free_path(path); in btrfs_del_inode_extref()
198 struct btrfs_path *path; in btrfs_del_inode_ref() local
214 path = btrfs_alloc_path(); in btrfs_del_inode_ref()
215 if (!path) in btrfs_del_inode_ref()
218 path->leave_spinning = 1; in btrfs_del_inode_ref()
220 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in btrfs_del_inode_ref()
228 if (!find_name_in_backref(path, name, name_len, &ref)) { in btrfs_del_inode_ref()
233 leaf = path->nodes[0]; in btrfs_del_inode_ref()
234 item_size = btrfs_item_size_nr(leaf, path->slots[0]); in btrfs_del_inode_ref()
240 ret = btrfs_del_item(trans, root, path); in btrfs_del_inode_ref()
245 item_start = btrfs_item_ptr_offset(leaf, path->slots[0]); in btrfs_del_inode_ref()
248 btrfs_truncate_item(root, path, item_size - sub_item_len, 1); in btrfs_del_inode_ref()
250 btrfs_free_path(path); in btrfs_del_inode_ref()
279 struct btrfs_path *path; in btrfs_insert_inode_extref() local
288 path = btrfs_alloc_path(); in btrfs_insert_inode_extref()
289 if (!path) in btrfs_insert_inode_extref()
292 path->leave_spinning = 1; in btrfs_insert_inode_extref()
293 ret = btrfs_insert_empty_item(trans, root, path, &key, in btrfs_insert_inode_extref()
296 if (btrfs_find_name_in_ext_backref(path, ref_objectid, in btrfs_insert_inode_extref()
300 btrfs_extend_item(root, path, ins_len); in btrfs_insert_inode_extref()
306 leaf = path->nodes[0]; in btrfs_insert_inode_extref()
307 item = btrfs_item_nr(path->slots[0]); in btrfs_insert_inode_extref()
308 ptr = (unsigned long)btrfs_item_ptr(leaf, path->slots[0], char); in btrfs_insert_inode_extref()
312 btrfs_set_inode_extref_name_len(path->nodes[0], extref, name_len); in btrfs_insert_inode_extref()
313 btrfs_set_inode_extref_index(path->nodes[0], extref, index); in btrfs_insert_inode_extref()
314 btrfs_set_inode_extref_parent(path->nodes[0], extref, ref_objectid); in btrfs_insert_inode_extref()
317 write_extent_buffer(path->nodes[0], name, ptr, name_len); in btrfs_insert_inode_extref()
318 btrfs_mark_buffer_dirty(path->nodes[0]); in btrfs_insert_inode_extref()
321 btrfs_free_path(path); in btrfs_insert_inode_extref()
331 struct btrfs_path *path; in btrfs_insert_inode_ref() local
342 path = btrfs_alloc_path(); in btrfs_insert_inode_ref()
343 if (!path) in btrfs_insert_inode_ref()
346 path->leave_spinning = 1; in btrfs_insert_inode_ref()
347 path->skip_release_on_error = 1; in btrfs_insert_inode_ref()
348 ret = btrfs_insert_empty_item(trans, root, path, &key, in btrfs_insert_inode_ref()
353 if (find_name_in_backref(path, name, name_len, &ref)) in btrfs_insert_inode_ref()
356 old_size = btrfs_item_size_nr(path->nodes[0], path->slots[0]); in btrfs_insert_inode_ref()
357 btrfs_extend_item(root, path, ins_len); in btrfs_insert_inode_ref()
358 ref = btrfs_item_ptr(path->nodes[0], path->slots[0], in btrfs_insert_inode_ref()
361 btrfs_set_inode_ref_name_len(path->nodes[0], ref, name_len); in btrfs_insert_inode_ref()
362 btrfs_set_inode_ref_index(path->nodes[0], ref, index); in btrfs_insert_inode_ref()
367 if (find_name_in_backref(path, name, name_len, &ref)) in btrfs_insert_inode_ref()
374 ref = btrfs_item_ptr(path->nodes[0], path->slots[0], in btrfs_insert_inode_ref()
376 btrfs_set_inode_ref_name_len(path->nodes[0], ref, name_len); in btrfs_insert_inode_ref()
377 btrfs_set_inode_ref_index(path->nodes[0], ref, index); in btrfs_insert_inode_ref()
380 write_extent_buffer(path->nodes[0], name, ptr, name_len); in btrfs_insert_inode_ref()
381 btrfs_mark_buffer_dirty(path->nodes[0]); in btrfs_insert_inode_ref()
384 btrfs_free_path(path); in btrfs_insert_inode_ref()
403 struct btrfs_path *path, u64 objectid) in btrfs_insert_empty_inode() argument
411 ret = btrfs_insert_empty_item(trans, root, path, &key, in btrfs_insert_empty_inode()
417 *root, struct btrfs_path *path, in btrfs_lookup_inode() argument
427 ret = btrfs_search_slot(trans, root, location, path, ins_len, cow); in btrfs_lookup_inode()
429 location->offset == (u64)-1 && path->slots[0] != 0) { in btrfs_lookup_inode()
430 slot = path->slots[0] - 1; in btrfs_lookup_inode()
431 leaf = path->nodes[0]; in btrfs_lookup_inode()
435 path->slots[0]--; in btrfs_lookup_inode()