Lines Matching defs:btree

15 		   struct bplus_header *btree, unsigned sec,
24 if (bp_internal(btree)) {
25 for (i = 0; i < btree->n_used_nodes; i++)
26 if (le32_to_cpu(btree->u.internal[i].file_secno) > sec) {
27 a = le32_to_cpu(btree->u.internal[i].down);
30 btree = &anode->btree;
37 for (i = 0; i < btree->n_used_nodes; i++)
38 if (le32_to_cpu(btree->u.external[i].file_secno) <= sec &&
39 le32_to_cpu(btree->u.external[i].file_secno) + le32_to_cpu(btree->u.external[i].length) > sec) {
40 a = le32_to_cpu(btree->u.external[i].disk_secno) + sec - le32_to_cpu(btree->u.external[i].file_secno);
47 hpfs_inode->i_file_sec = le32_to_cpu(btree->u.external[i].file_secno);
48 hpfs_inode->i_disk_sec = le32_to_cpu(btree->u.external[i].disk_secno);
49 hpfs_inode->i_n_secs = le32_to_cpu(btree->u.external[i].length);
63 struct bplus_header *btree;
74 btree = &fnode->btree;
77 btree = &anode->btree;
81 if ((n = btree->n_used_nodes - 1) < -!!fnod) {
86 if (bp_internal(btree)) {
87 a = le32_to_cpu(btree->u.internal[n].down);
88 btree->u.internal[n].file_secno = cpu_to_le32(-1);
94 btree = &anode->btree;
98 if (le32_to_cpu(btree->u.external[n].file_secno) + le32_to_cpu(btree->u.external[n].length) != fsecno) {
100 le32_to_cpu(btree->u.external[n].file_secno) + le32_to_cpu(btree->u.external[n].length), fsecno,
105 if (hpfs_alloc_if_possible(s, se = le32_to_cpu(btree->u.external[n].disk_secno) + le32_to_cpu(btree->u.external[n].length))) {
106 le32_add_cpu(&btree->u.external[n].length, 1);
123 fs = n < 0 ? 0 : le32_to_cpu(btree->u.external[n].file_secno) + le32_to_cpu(btree->u.external[n].length);
124 if (!btree->n_free_nodes) {
133 anode->btree.flags |= BP_fnode_parent;
134 anode->btree.n_used_nodes = btree->n_used_nodes;
135 anode->btree.first_free = btree->first_free;
136 anode->btree.n_free_nodes = 40 - anode->btree.n_used_nodes;
137 memcpy(&anode->u, &btree->u, btree->n_used_nodes * 12);
138 btree->flags |= BP_internal;
139 btree->n_free_nodes = 11;
140 btree->n_used_nodes = 1;
141 btree->first_free = cpu_to_le16((char *)&(btree->u.internal[1]) - (char *)btree);
142 btree->u.internal[0].file_secno = cpu_to_le32(-1);
143 btree->u.internal[0].down = cpu_to_le32(na);
154 btree = &anode->btree;
156 btree->n_free_nodes--; n = btree->n_used_nodes++;
157 le16_add_cpu(&btree->first_free, 12);
158 btree->u.external[n].disk_secno = cpu_to_le32(se);
159 btree->u.external[n].file_secno = cpu_to_le32(fs);
160 btree->u.external[n].length = cpu_to_le32(1);
171 btree = &anode->btree;
174 btree = &fnode->btree;
176 if (btree->n_free_nodes) {
177 btree->n_free_nodes--; n = btree->n_used_nodes++;
178 le16_add_cpu(&btree->first_free, 8);
179 btree->u.internal[n].file_secno = cpu_to_le32(-1);
180 btree->u.internal[n].down = cpu_to_le32(na);
181 btree->u.internal[n-1].file_secno = cpu_to_le32(fs);
189 anode->btree.flags |= BP_fnode_parent;
191 anode->btree.flags &= ~BP_fnode_parent;
198 btree->u.internal[btree->n_used_nodes - 1].file_secno = cpu_to_le32(/*fs*/-1);
205 anode->btree.flags |= BP_internal;
206 anode->btree.n_used_nodes = 1;
207 anode->btree.n_free_nodes = 59;
208 anode->btree.first_free = cpu_to_le16(16);
209 anode->btree.u.internal[0].down = cpu_to_le32(a);
210 anode->btree.u.internal[0].file_secno = cpu_to_le32(-1);
223 anode->btree.flags |= BP_fnode_parent;
232 btree = &anode->btree;
238 btree = &fnode->btree;
241 memcpy(&ranode->btree, btree, le16_to_cpu(btree->first_free));
243 ranode->btree.flags |= BP_fnode_parent;
244 ranode->btree.n_free_nodes = (bp_internal(&ranode->btree) ? 60 : 40) - ranode->btree.n_used_nodes;
245 if (bp_internal(&ranode->btree)) for (n = 0; n < ranode->btree.n_used_nodes; n++) {
249 unode->btree.flags &= ~BP_fnode_parent;
254 btree->flags |= BP_internal;
255 btree->n_free_nodes = fnod ? 10 : 58;
256 btree->n_used_nodes = 2;
257 btree->first_free = cpu_to_le16((char *)&btree->u.internal[2] - (char *)btree);
258 btree->u.internal[0].file_secno = cpu_to_le32(fs);
259 btree->u.internal[0].down = cpu_to_le32(ra);
260 btree->u.internal[1].file_secno = cpu_to_le32(-1);
261 btree->u.internal[1].down = cpu_to_le32(na);
274 void hpfs_remove_btree(struct super_block *s, struct bplus_header *btree)
276 struct bplus_header *btree1 = btree;
294 btree1 = &anode->btree;
310 btree1 = &anode->btree;
311 } else btree1 = btree;
335 return hpfs_bplus_lookup(s, NULL, &anode->btree, sec, bh);
391 hpfs_remove_btree(s, &anode->btree);
404 struct bplus_header *btree;
410 btree = &fnode->btree;
413 btree = &anode->btree;
416 hpfs_remove_btree(s, btree);
418 btree->n_free_nodes = 8;
419 btree->n_used_nodes = 0;
420 btree->first_free = cpu_to_le16(8);
421 btree->flags &= ~BP_internal;
427 while (bp_internal(btree)) {
428 nodes = btree->n_used_nodes + btree->n_free_nodes;
429 for (i = 0; i < btree->n_used_nodes; i++)
430 if (le32_to_cpu(btree->u.internal[i].file_secno) >= secs) goto f;
432 hpfs_error(s, "internal btree %08x doesn't end with -1", node);
435 for (j = i + 1; j < btree->n_used_nodes; j++)
436 hpfs_ea_remove(s, le32_to_cpu(btree->u.internal[j].down), 1, 0);
437 btree->n_used_nodes = i + 1;
438 btree->n_free_nodes = nodes - btree->n_used_nodes;
439 btree->first_free = cpu_to_le16(8 + 8 * btree->n_used_nodes);
441 if (btree->u.internal[i].file_secno == cpu_to_le32(secs)) {
445 node = le32_to_cpu(btree->u.internal[i].down);
451 btree = &anode->btree;
453 nodes = btree->n_used_nodes + btree->n_free_nodes;
454 for (i = 0; i < btree->n_used_nodes; i++)
455 if (le32_to_cpu(btree->u.external[i].file_secno) + le32_to_cpu(btree->u.external[i].length) >= secs) goto ff;
459 if (secs <= le32_to_cpu(btree->u.external[i].file_secno)) {
463 else if (le32_to_cpu(btree->u.external[i].file_secno) + le32_to_cpu(btree->u.external[i].length) > secs) {
464 hpfs_free_sectors(s, le32_to_cpu(btree->u.external[i].disk_secno) + secs -
465 le32_to_cpu(btree->u.external[i].file_secno), le32_to_cpu(btree->u.external[i].length)
466 - secs + le32_to_cpu(btree->u.external[i].file_secno)); /* I hope gcc optimizes this :-) */
467 btree->u.external[i].length = cpu_to_le32(secs - le32_to_cpu(btree->u.external[i].file_secno));
469 for (j = i + 1; j < btree->n_used_nodes; j++)
470 hpfs_free_sectors(s, le32_to_cpu(btree->u.external[j].disk_secno), le32_to_cpu(btree->u.external[j].length));
471 btree->n_used_nodes = i + 1;
472 btree->n_free_nodes = nodes - btree->n_used_nodes;
473 btree->first_free = cpu_to_le16(8 + 12 * btree->n_used_nodes);
488 if (!fnode_is_dir(fnode)) hpfs_remove_btree(s, &fnode->btree);