Lines Matching full:fd
15 int hfs_find_init(struct hfs_btree *tree, struct hfs_find_data *fd)
19 fd->tree = tree;
20 fd->bnode = NULL;
24 fd->search_key = ptr;
25 fd->key = ptr + tree->max_key_len + 2;
33 void hfs_find_exit(struct hfs_find_data *fd)
35 hfs_bnode_put(fd->bnode);
36 kfree(fd->search_key);
38 fd->tree->cnid, __builtin_return_address(0));
39 mutex_unlock(&fd->tree->tree_lock);
40 fd->tree = NULL;
44 struct hfs_find_data *fd,
53 cur_cnid = fd->key->ext.cnid;
54 search_cnid = fd->search_key->ext.cnid;
56 cur_cnid = fd->key->cat.parent;
57 search_cnid = fd->search_key->cat.parent;
59 cur_cnid = fd->key->attr.cnid;
60 search_cnid = fd->search_key->attr.cnid;
82 struct hfs_find_data *fd,
89 cmpval = bnode->tree->keycmp(fd->key, fd->search_key);
103 int __hfs_brec_find(struct hfs_bnode *bnode, struct hfs_find_data *fd,
123 hfs_bnode_read(bnode, fd->key, off, keylen);
124 if (rec_found(bnode, fd, &b, &e, &rec)) {
137 hfs_bnode_read(bnode, fd->key, off, keylen);
141 fd->record = e;
142 fd->keyoffset = off;
143 fd->keylength = keylen;
144 fd->entryoffset = off + keylen;
145 fd->entrylength = len - keylen;
153 int hfs_brec_find(struct hfs_find_data *fd, search_strategy_t do_key_compare)
161 fd->record = -1;
162 fd->keyoffset = -1;
163 fd->keylength = -1;
164 fd->entryoffset = -1;
165 fd->entrylength = -1;
167 tree = fd->tree;
168 if (fd->bnode)
169 hfs_bnode_put(fd->bnode);
170 fd->bnode = NULL;
190 res = __hfs_brec_find(bnode, fd, do_key_compare);
193 if (fd->record < 0)
197 hfs_bnode_read(bnode, &data, fd->entryoffset, 4);
201 fd->bnode = bnode;
213 int hfs_brec_read(struct hfs_find_data *fd, void *rec, u32 rec_len)
217 res = hfs_brec_find(fd, hfs_find_rec_by_key);
220 if (fd->entrylength > rec_len)
222 hfs_bnode_read(fd->bnode, rec, fd->entryoffset, fd->entrylength);
226 int hfs_brec_goto(struct hfs_find_data *fd, int cnt)
233 bnode = fd->bnode;
238 while (cnt > fd->record) {
239 cnt -= fd->record + 1;
240 fd->record = bnode->num_recs - 1;
254 fd->record -= cnt;
256 while (cnt >= bnode->num_recs - fd->record) {
257 cnt -= bnode->num_recs - fd->record;
258 fd->record = 0;
272 fd->record += cnt;
275 len = hfs_brec_lenoff(bnode, fd->record, &off);
276 keylen = hfs_brec_keylen(bnode, fd->record);
281 fd->keyoffset = off;
282 fd->keylength = keylen;
283 fd->entryoffset = off + keylen;
284 fd->entrylength = len - keylen;
285 hfs_bnode_read(bnode, fd->key, off, keylen);
287 fd->bnode = bnode;