Lines Matching refs: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;
44 void hfs_find_exit(struct hfs_find_data *fd)
46 hfs_bnode_put(fd->bnode);
47 kfree(fd->search_key);
49 fd->tree->cnid, __builtin_return_address(0));
50 mutex_unlock(&fd->tree->tree_lock);
51 fd->tree = NULL;
55 struct hfs_find_data *fd,
64 cur_cnid = fd->key->ext.cnid;
65 search_cnid = fd->search_key->ext.cnid;
67 cur_cnid = fd->key->cat.parent;
68 search_cnid = fd->search_key->cat.parent;
70 cur_cnid = fd->key->attr.cnid;
71 search_cnid = fd->search_key->attr.cnid;
93 struct hfs_find_data *fd,
100 cmpval = bnode->tree->keycmp(fd->key, fd->search_key);
114 int __hfs_brec_find(struct hfs_bnode *bnode, struct hfs_find_data *fd,
134 hfs_bnode_read(bnode, fd->key, off, keylen);
135 if (rec_found(bnode, fd, &b, &e, &rec)) {
148 hfs_bnode_read(bnode, fd->key, off, keylen);
152 fd->record = e;
153 fd->keyoffset = off;
154 fd->keylength = keylen;
155 fd->entryoffset = off + keylen;
156 fd->entrylength = len - keylen;
164 int hfs_brec_find(struct hfs_find_data *fd, search_strategy_t do_key_compare)
172 tree = fd->tree;
173 if (fd->bnode)
174 hfs_bnode_put(fd->bnode);
175 fd->bnode = NULL;
195 res = __hfs_brec_find(bnode, fd, do_key_compare);
198 if (fd->record < 0)
202 hfs_bnode_read(bnode, &data, fd->entryoffset, 4);
206 fd->bnode = bnode;
218 int hfs_brec_read(struct hfs_find_data *fd, void *rec, int rec_len)
222 res = hfs_brec_find(fd, hfs_find_rec_by_key);
225 if (fd->entrylength > rec_len)
227 hfs_bnode_read(fd->bnode, rec, fd->entryoffset, fd->entrylength);
231 int hfs_brec_goto(struct hfs_find_data *fd, int cnt)
238 bnode = fd->bnode;
243 while (cnt > fd->record) {
244 cnt -= fd->record + 1;
245 fd->record = bnode->num_recs - 1;
259 fd->record -= cnt;
261 while (cnt >= bnode->num_recs - fd->record) {
262 cnt -= bnode->num_recs - fd->record;
263 fd->record = 0;
277 fd->record += cnt;
280 len = hfs_brec_lenoff(bnode, fd->record, &off);
281 keylen = hfs_brec_keylen(bnode, fd->record);
286 fd->keyoffset = off;
287 fd->keylength = keylen;
288 fd->entryoffset = off + keylen;
289 fd->entrylength = len - keylen;
290 hfs_bnode_read(bnode, fd->key, off, keylen);
292 fd->bnode = bnode;