Lines Matching refs:fd
15 static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd);
16 static int hfs_brec_update_parent(struct hfs_find_data *fd);
63 int hfs_brec_insert(struct hfs_find_data *fd, void *entry, int entry_len) in hfs_brec_insert() argument
72 tree = fd->tree; in hfs_brec_insert()
73 if (!fd->bnode) { in hfs_brec_insert()
79 fd->bnode = node; in hfs_brec_insert()
80 fd->record = -1; in hfs_brec_insert()
83 key_len = be16_to_cpu(fd->search_key->key_len) + 2; 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()
132 hfs_bnode_write(node, fd->search_key, data_off, key_len); in hfs_brec_insert()
141 hfs_bnode_read_key(node, fd->search_key, data_off + size); in hfs_brec_insert()
142 hfs_brec_update_parent(fd); in hfs_brec_insert()
146 hfs_bnode_put(fd->bnode); in hfs_brec_insert()
151 fd->bnode = hfs_bnode_find(tree, new_node->parent); in hfs_brec_insert()
159 hfs_bnode_read_key(new_node, fd->search_key, 14); in hfs_brec_insert()
160 __hfs_brec_find(fd->bnode, fd, hfs_find_rec_by_key); in hfs_brec_insert()
167 key_len = be16_to_cpu(fd->search_key->key_len) + 2; in hfs_brec_insert()
169 fd->search_key->key_len = in hfs_brec_insert()
179 int hfs_brec_remove(struct hfs_find_data *fd) in hfs_brec_remove() argument
185 tree = fd->tree; in hfs_brec_remove()
186 node = fd->bnode; in hfs_brec_remove()
188 rec_off = tree->node_size - (fd->record + 2) * 2; in hfs_brec_remove()
197 fd->record, fd->keylength + fd->entrylength); in hfs_brec_remove()
206 node = fd->bnode = parent; in hfs_brec_remove()
208 __hfs_brec_find(node, fd, hfs_find_rec_by_key); in hfs_brec_remove()
217 size = fd->keylength + fd->entrylength; in hfs_brec_remove()
226 hfs_bnode_move(node, fd->keyoffset, fd->keyoffset + size, in hfs_brec_remove()
227 data_off - fd->keyoffset - size); in hfs_brec_remove()
230 if (!fd->record) in hfs_brec_remove()
231 hfs_brec_update_parent(fd); in hfs_brec_remove()
235 static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) in hfs_bnode_split() argument
243 tree = fd->tree; in hfs_bnode_split()
244 node = fd->bnode; in hfs_bnode_split()
286 if (fd->record + 1 < num_recs) { in hfs_bnode_split()
296 fd->bnode = new_node; in hfs_bnode_split()
297 fd->record -= num_recs; in hfs_bnode_split()
298 fd->keyoffset -= data_start - 14; in hfs_bnode_split()
299 fd->entryoffset -= data_start - 14; in hfs_bnode_split()
356 static int hfs_brec_update_parent(struct hfs_find_data *fd) in hfs_brec_update_parent() argument
364 tree = fd->tree; in hfs_brec_update_parent()
365 node = fd->bnode; in hfs_brec_update_parent()
374 __hfs_brec_find(parent, fd, hfs_find_rec_by_key); in hfs_brec_update_parent()
375 if (fd->record < 0) in hfs_brec_update_parent()
378 rec = fd->record; in hfs_brec_update_parent()
385 fd->keylength = newkeylen = tree->max_key_len + 2; in hfs_brec_update_parent()
387 rec, fd->keylength, newkeylen); in hfs_brec_update_parent()
391 diff = newkeylen - fd->keylength; in hfs_brec_update_parent()
399 fd->bnode = parent; in hfs_brec_update_parent()
400 new_node = hfs_bnode_split(fd); in hfs_brec_update_parent()
403 parent = fd->bnode; in hfs_brec_update_parent()
404 rec = fd->record; in hfs_brec_update_parent()
423 hfs_bnode_copy(parent, fd->keyoffset, node, 14, newkeylen); in hfs_brec_update_parent()
436 fd->bnode = hfs_bnode_find(tree, new_node->parent); in hfs_brec_update_parent()
438 hfs_bnode_read_key(new_node, fd->search_key, 14); in hfs_brec_update_parent()
441 __hfs_brec_find(fd->bnode, fd, hfs_find_rec_by_key); in hfs_brec_update_parent()
442 hfs_brec_insert(fd, &cnid, sizeof(cnid)); in hfs_brec_update_parent()
443 hfs_bnode_put(fd->bnode); in hfs_brec_update_parent()
450 hfs_bnode_read_key(node, fd->search_key, 14); in hfs_brec_update_parent()
458 fd->bnode = node; in hfs_brec_update_parent()