Lines Matching refs:fd
15 int hfs_find_init(struct hfs_btree *tree, struct hfs_find_data *fd) in hfs_find_init() argument
19 fd->tree = tree; in hfs_find_init()
20 fd->bnode = NULL; in hfs_find_init()
24 fd->search_key = ptr; in hfs_find_init()
25 fd->key = ptr + tree->max_key_len + 2; in hfs_find_init()
32 void hfs_find_exit(struct hfs_find_data *fd) in hfs_find_exit() argument
34 hfs_bnode_put(fd->bnode); in hfs_find_exit()
35 kfree(fd->search_key); in hfs_find_exit()
37 fd->tree->cnid, __builtin_return_address(0)); in hfs_find_exit()
38 mutex_unlock(&fd->tree->tree_lock); in hfs_find_exit()
39 fd->tree = NULL; in hfs_find_exit()
43 int __hfs_brec_find(struct hfs_bnode *bnode, struct hfs_find_data *fd) in __hfs_brec_find() argument
62 hfs_bnode_read(bnode, fd->key, off, keylen); in __hfs_brec_find()
63 cmpval = bnode->tree->keycmp(fd->key, fd->search_key); in __hfs_brec_find()
81 hfs_bnode_read(bnode, fd->key, off, keylen); in __hfs_brec_find()
84 fd->record = e; in __hfs_brec_find()
85 fd->keyoffset = off; in __hfs_brec_find()
86 fd->keylength = keylen; in __hfs_brec_find()
87 fd->entryoffset = off + keylen; in __hfs_brec_find()
88 fd->entrylength = len - keylen; in __hfs_brec_find()
95 int hfs_brec_find(struct hfs_find_data *fd) in hfs_brec_find() argument
103 tree = fd->tree; in hfs_brec_find()
104 if (fd->bnode) in hfs_brec_find()
105 hfs_bnode_put(fd->bnode); in hfs_brec_find()
106 fd->bnode = NULL; in hfs_brec_find()
126 res = __hfs_brec_find(bnode, fd); in hfs_brec_find()
129 if (fd->record < 0) in hfs_brec_find()
133 hfs_bnode_read(bnode, &data, fd->entryoffset, 4); in hfs_brec_find()
137 fd->bnode = bnode; in hfs_brec_find()
149 int hfs_brec_read(struct hfs_find_data *fd, void *rec, int rec_len) in hfs_brec_read() argument
153 res = hfs_brec_find(fd); in hfs_brec_read()
156 if (fd->entrylength > rec_len) in hfs_brec_read()
158 hfs_bnode_read(fd->bnode, rec, fd->entryoffset, fd->entrylength); in hfs_brec_read()
162 int hfs_brec_goto(struct hfs_find_data *fd, int cnt) in hfs_brec_goto() argument
169 bnode = fd->bnode; in hfs_brec_goto()
174 while (cnt > fd->record) { in hfs_brec_goto()
175 cnt -= fd->record + 1; in hfs_brec_goto()
176 fd->record = bnode->num_recs - 1; in hfs_brec_goto()
190 fd->record -= cnt; in hfs_brec_goto()
192 while (cnt >= bnode->num_recs - fd->record) { in hfs_brec_goto()
193 cnt -= bnode->num_recs - fd->record; in hfs_brec_goto()
194 fd->record = 0; in hfs_brec_goto()
208 fd->record += cnt; in hfs_brec_goto()
211 len = hfs_brec_lenoff(bnode, fd->record, &off); in hfs_brec_goto()
212 keylen = hfs_brec_keylen(bnode, fd->record); in hfs_brec_goto()
217 fd->keyoffset = off; in hfs_brec_goto()
218 fd->keylength = keylen; in hfs_brec_goto()
219 fd->entryoffset = off + keylen; in hfs_brec_goto()
220 fd->entrylength = len - keylen; in hfs_brec_goto()
221 hfs_bnode_read(bnode, fd->key, off, keylen); in hfs_brec_goto()
223 fd->bnode = bnode; in hfs_brec_goto()