Lines Matching refs:fd
13 static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd);
14 static int hfs_brec_update_parent(struct hfs_find_data *fd);
64 int hfs_brec_insert(struct hfs_find_data *fd, void *entry, int entry_len) in hfs_brec_insert() argument
73 tree = fd->tree; in hfs_brec_insert()
74 if (!fd->bnode) { in hfs_brec_insert()
77 fd->bnode = hfs_bnode_find(tree, tree->leaf_head); in hfs_brec_insert()
78 if (IS_ERR(fd->bnode)) in hfs_brec_insert()
79 return PTR_ERR(fd->bnode); in hfs_brec_insert()
80 fd->record = -1; in hfs_brec_insert()
83 key_len = (fd->search_key->key_len | 1) + 1; in hfs_brec_insert()
86 rec = fd->record + 1; in hfs_brec_insert()
89 node = fd->bnode; in hfs_brec_insert()
100 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); in hfs_brec_insert()
164 key_len = fd->search_key->key_len + 1; in hfs_brec_insert()
166 fd->search_key->key_len = tree->max_key_len; in hfs_brec_insert()
175 int hfs_brec_remove(struct hfs_find_data *fd) in hfs_brec_remove() argument
181 tree = fd->tree; in hfs_brec_remove()
182 node = fd->bnode; in hfs_brec_remove()
184 rec_off = tree->node_size - (fd->record + 2) * 2; in hfs_brec_remove()
193 fd->record, fd->keylength + fd->entrylength); in hfs_brec_remove()
202 node = fd->bnode = parent; in hfs_brec_remove()
204 __hfs_brec_find(node, fd); in hfs_brec_remove()
211 size = fd->keylength + fd->entrylength; in hfs_brec_remove()
220 hfs_bnode_move(node, fd->keyoffset, fd->keyoffset + size, in hfs_brec_remove()
221 data_off - fd->keyoffset - size); in hfs_brec_remove()
224 if (!fd->record) in hfs_brec_remove()
225 hfs_brec_update_parent(fd); in hfs_brec_remove()
229 static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) in hfs_bnode_split() argument
237 tree = fd->tree; in hfs_bnode_split()
238 node = fd->bnode; in hfs_bnode_split()
280 if (fd->record + 1 < num_recs) { in hfs_bnode_split()
290 fd->bnode = new_node; in hfs_bnode_split()
291 fd->record -= num_recs; in hfs_bnode_split()
292 fd->keyoffset -= data_start - 14; in hfs_bnode_split()
293 fd->entryoffset -= data_start - 14; in hfs_bnode_split()
350 static int hfs_brec_update_parent(struct hfs_find_data *fd) in hfs_brec_update_parent() argument
358 tree = fd->tree; in hfs_brec_update_parent()
359 node = fd->bnode; in hfs_brec_update_parent()
368 __hfs_brec_find(parent, fd); in hfs_brec_update_parent()
369 if (fd->record < 0) in hfs_brec_update_parent()
372 rec = fd->record; in hfs_brec_update_parent()
378 fd->keylength = newkeylen = tree->max_key_len + 1; in hfs_brec_update_parent()
380 rec, fd->keylength, newkeylen); in hfs_brec_update_parent()
384 diff = newkeylen - fd->keylength; in hfs_brec_update_parent()
392 fd->bnode = parent; in hfs_brec_update_parent()
393 new_node = hfs_bnode_split(fd); in hfs_brec_update_parent()
396 parent = fd->bnode; in hfs_brec_update_parent()
397 rec = fd->record; in hfs_brec_update_parent()
415 hfs_bnode_copy(parent, fd->keyoffset, node, 14, newkeylen); in hfs_brec_update_parent()
417 hfs_bnode_write_u8(parent, fd->keyoffset, newkeylen - 1); in hfs_brec_update_parent()
426 fd->bnode = hfs_bnode_find(tree, new_node->parent); in hfs_brec_update_parent()
428 hfs_bnode_read_key(new_node, fd->search_key, 14); in hfs_brec_update_parent()
431 __hfs_brec_find(fd->bnode, fd); in hfs_brec_update_parent()
432 hfs_brec_insert(fd, &cnid, sizeof(cnid)); in hfs_brec_update_parent()
433 hfs_bnode_put(fd->bnode); in hfs_brec_update_parent()
440 hfs_bnode_read_key(node, fd->search_key, 14); in hfs_brec_update_parent()
447 fd->bnode = node; in hfs_brec_update_parent()