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