Lines Matching refs:fd
14 static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd);
15 static int hfs_brec_update_parent(struct hfs_find_data *fd);
62 int hfs_brec_insert(struct hfs_find_data *fd, void *entry, int entry_len) in hfs_brec_insert() argument
71 tree = fd->tree; in hfs_brec_insert()
72 if (!fd->bnode) { in hfs_brec_insert()
75 fd->bnode = hfs_bnode_find(tree, tree->leaf_head); in hfs_brec_insert()
76 if (IS_ERR(fd->bnode)) in hfs_brec_insert()
77 return PTR_ERR(fd->bnode); in hfs_brec_insert()
78 fd->record = -1; in hfs_brec_insert()
81 key_len = be16_to_cpu(fd->search_key->key_len) + 2; in hfs_brec_insert()
84 rec = fd->record + 1; in hfs_brec_insert()
87 node = fd->bnode; in hfs_brec_insert()
98 new_node = hfs_bnode_split(fd); in hfs_brec_insert()
130 hfs_bnode_write(node, fd->search_key, data_off, key_len); in hfs_brec_insert()
139 hfs_bnode_read_key(node, fd->search_key, data_off + size); in hfs_brec_insert()
140 hfs_brec_update_parent(fd); in hfs_brec_insert()
144 hfs_bnode_put(fd->bnode); in hfs_brec_insert()
149 fd->bnode = hfs_bnode_find(tree, new_node->parent); in hfs_brec_insert()
157 hfs_bnode_read_key(new_node, fd->search_key, 14); in hfs_brec_insert()
158 __hfs_brec_find(fd->bnode, fd, hfs_find_rec_by_key); in hfs_brec_insert()
165 key_len = be16_to_cpu(fd->search_key->key_len) + 2; in hfs_brec_insert()
167 fd->search_key->key_len = in hfs_brec_insert()
177 int hfs_brec_remove(struct hfs_find_data *fd) in hfs_brec_remove() argument
183 tree = fd->tree; in hfs_brec_remove()
184 node = fd->bnode; in hfs_brec_remove()
186 rec_off = tree->node_size - (fd->record + 2) * 2; in hfs_brec_remove()
195 fd->record, fd->keylength + fd->entrylength); in hfs_brec_remove()
204 node = fd->bnode = parent; in hfs_brec_remove()
206 __hfs_brec_find(node, fd, hfs_find_rec_by_key); in hfs_brec_remove()
215 size = fd->keylength + fd->entrylength; in hfs_brec_remove()
224 hfs_bnode_move(node, fd->keyoffset, fd->keyoffset + size, in hfs_brec_remove()
225 data_off - fd->keyoffset - size); in hfs_brec_remove()
228 if (!fd->record) in hfs_brec_remove()
229 hfs_brec_update_parent(fd); in hfs_brec_remove()
233 static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) in hfs_bnode_split() argument
241 tree = fd->tree; in hfs_bnode_split()
242 node = fd->bnode; in hfs_bnode_split()
284 if (fd->record + 1 < num_recs) { in hfs_bnode_split()
294 fd->bnode = new_node; in hfs_bnode_split()
295 fd->record -= num_recs; in hfs_bnode_split()
296 fd->keyoffset -= data_start - 14; in hfs_bnode_split()
297 fd->entryoffset -= data_start - 14; in hfs_bnode_split()
354 static int hfs_brec_update_parent(struct hfs_find_data *fd) in hfs_brec_update_parent() argument
362 tree = fd->tree; in hfs_brec_update_parent()
363 node = fd->bnode; in hfs_brec_update_parent()
372 __hfs_brec_find(parent, fd, hfs_find_rec_by_key); in hfs_brec_update_parent()
373 if (fd->record < 0) in hfs_brec_update_parent()
376 rec = fd->record; in hfs_brec_update_parent()
383 fd->keylength = newkeylen = tree->max_key_len + 2; in hfs_brec_update_parent()
385 rec, fd->keylength, newkeylen); in hfs_brec_update_parent()
389 diff = newkeylen - fd->keylength; in hfs_brec_update_parent()
397 fd->bnode = parent; in hfs_brec_update_parent()
398 new_node = hfs_bnode_split(fd); in hfs_brec_update_parent()
401 parent = fd->bnode; in hfs_brec_update_parent()
402 rec = fd->record; in hfs_brec_update_parent()
421 hfs_bnode_copy(parent, fd->keyoffset, node, 14, newkeylen); in hfs_brec_update_parent()
430 fd->bnode = hfs_bnode_find(tree, new_node->parent); in hfs_brec_update_parent()
432 hfs_bnode_read_key(new_node, fd->search_key, 14); in hfs_brec_update_parent()
435 __hfs_brec_find(fd->bnode, fd, hfs_find_rec_by_key); in hfs_brec_update_parent()
436 hfs_brec_insert(fd, &cnid, sizeof(cnid)); in hfs_brec_update_parent()
437 hfs_bnode_put(fd->bnode); in hfs_brec_update_parent()
444 hfs_bnode_read_key(node, fd->search_key, 14); in hfs_brec_update_parent()
451 fd->bnode = node; in hfs_brec_update_parent()