• Home
  • Raw
  • Download

Lines Matching refs:entry

481 	struct btrfs_free_space_entry *entry;  in io_ctl_add_entry()  local
486 entry = io_ctl->cur; in io_ctl_add_entry()
487 entry->offset = cpu_to_le64(offset); in io_ctl_add_entry()
488 entry->bytes = cpu_to_le64(bytes); in io_ctl_add_entry()
489 entry->type = (bitmap) ? BTRFS_FREE_SPACE_BITMAP : in io_ctl_add_entry()
549 struct btrfs_free_space *entry, u8 *type) in io_ctl_read_entry() argument
561 entry->offset = le64_to_cpu(e->offset); in io_ctl_read_entry()
562 entry->bytes = le64_to_cpu(e->bytes); in io_ctl_read_entry()
576 struct btrfs_free_space *entry) in io_ctl_read_bitmap() argument
584 memcpy(entry->bitmap, io_ctl->cur, PAGE_CACHE_SIZE); in io_ctl_read_bitmap()
994 struct btrfs_free_space *entry = in __btrfs_write_out_cache() local
997 ret = io_ctl_add_bitmap(&io_ctl, entry->bitmap); in __btrfs_write_out_cache()
1000 list_del_init(&entry->list); in __btrfs_write_out_cache()
1067 struct btrfs_free_space *entry = in __btrfs_write_out_cache() local
1069 list_del_init(&entry->list); in __btrfs_write_out_cache()
1208 struct btrfs_free_space *entry, *prev = NULL; in tree_search_offset() local
1213 entry = NULL; in tree_search_offset()
1217 entry = rb_entry(n, struct btrfs_free_space, offset_index); in tree_search_offset()
1218 prev = entry; in tree_search_offset()
1220 if (offset < entry->offset) in tree_search_offset()
1222 else if (offset > entry->offset) in tree_search_offset()
1229 if (!entry) in tree_search_offset()
1231 if (entry->bitmap) in tree_search_offset()
1232 return entry; in tree_search_offset()
1241 entry = rb_entry(n, struct btrfs_free_space, offset_index); in tree_search_offset()
1242 if (entry->offset != offset) in tree_search_offset()
1245 WARN_ON(!entry->bitmap); in tree_search_offset()
1246 return entry; in tree_search_offset()
1247 } else if (entry) { in tree_search_offset()
1248 if (entry->bitmap) { in tree_search_offset()
1253 n = rb_prev(&entry->offset_index); in tree_search_offset()
1259 entry = prev; in tree_search_offset()
1262 return entry; in tree_search_offset()
1269 entry = prev; in tree_search_offset()
1270 if (entry->offset > offset) { in tree_search_offset()
1271 n = rb_prev(&entry->offset_index); in tree_search_offset()
1273 entry = rb_entry(n, struct btrfs_free_space, in tree_search_offset()
1275 BUG_ON(entry->offset > offset); in tree_search_offset()
1278 return entry; in tree_search_offset()
1284 if (entry->bitmap) { in tree_search_offset()
1285 n = rb_prev(&entry->offset_index); in tree_search_offset()
1293 if (entry->offset + BITS_PER_BITMAP * ctl->unit > offset) in tree_search_offset()
1294 return entry; in tree_search_offset()
1295 } else if (entry->offset + entry->bytes > offset) in tree_search_offset()
1296 return entry; in tree_search_offset()
1302 if (entry->bitmap) { in tree_search_offset()
1303 if (entry->offset + BITS_PER_BITMAP * in tree_search_offset()
1307 if (entry->offset + entry->bytes > offset) in tree_search_offset()
1311 n = rb_next(&entry->offset_index); in tree_search_offset()
1314 entry = rb_entry(n, struct btrfs_free_space, offset_index); in tree_search_offset()
1316 return entry; in tree_search_offset()
1472 struct btrfs_free_space *entry; in find_free_space() local
1482 entry = tree_search_offset(ctl, offset_to_bitmap(ctl, *offset), 0, 1); in find_free_space()
1483 if (!entry) in find_free_space()
1486 for (node = &entry->offset_index; node; node = rb_next(node)) { in find_free_space()
1487 entry = rb_entry(node, struct btrfs_free_space, offset_index); in find_free_space()
1488 if (entry->bytes < *bytes) in find_free_space()
1495 ctl_off = entry->offset - ctl->start; in find_free_space()
1499 align_off = tmp - entry->offset; in find_free_space()
1502 tmp = entry->offset; in find_free_space()
1505 if (entry->bytes < *bytes + align_off) in find_free_space()
1508 if (entry->bitmap) { in find_free_space()
1509 ret = search_bitmap(ctl, entry, &tmp, bytes); in find_free_space()
1512 return entry; in find_free_space()
1518 *bytes = entry->bytes - align_off; in find_free_space()
1519 return entry; in find_free_space()
1710 struct btrfs_free_space *entry; in insert_into_bitmap() local
1722 entry = rb_entry(node, struct btrfs_free_space, offset_index); in insert_into_bitmap()
1723 if (!entry->bitmap) { in insert_into_bitmap()
1728 if (entry->offset == offset_to_bitmap(ctl, offset)) { in insert_into_bitmap()
1729 bytes_added = add_bytes_to_bitmap(ctl, entry, in insert_into_bitmap()
2035 struct btrfs_free_space *entry; in __btrfs_return_cluster_to_free_space() local
2050 entry = rb_entry(node, struct btrfs_free_space, offset_index); in __btrfs_return_cluster_to_free_space()
2051 node = rb_next(&entry->offset_index); in __btrfs_return_cluster_to_free_space()
2052 rb_erase(&entry->offset_index, &cluster->root); in __btrfs_return_cluster_to_free_space()
2054 bitmap = (entry->bitmap != NULL); in __btrfs_return_cluster_to_free_space()
2056 try_merge_free_space(ctl, entry, false); in __btrfs_return_cluster_to_free_space()
2058 entry->offset, &entry->offset_index, bitmap); in __btrfs_return_cluster_to_free_space()
2126 struct btrfs_free_space *entry = NULL; in btrfs_find_space_for_alloc() local
2133 entry = find_free_space(ctl, &offset, &bytes_search, in btrfs_find_space_for_alloc()
2135 if (!entry) in btrfs_find_space_for_alloc()
2139 if (entry->bitmap) { in btrfs_find_space_for_alloc()
2140 bitmap_clear_bits(ctl, entry, offset, bytes); in btrfs_find_space_for_alloc()
2141 if (!entry->bytes) in btrfs_find_space_for_alloc()
2142 free_bitmap(ctl, entry); in btrfs_find_space_for_alloc()
2145 unlink_free_space(ctl, entry); in btrfs_find_space_for_alloc()
2146 align_gap_len = offset - entry->offset; in btrfs_find_space_for_alloc()
2147 align_gap = entry->offset; in btrfs_find_space_for_alloc()
2149 entry->offset = offset + bytes; in btrfs_find_space_for_alloc()
2150 WARN_ON(entry->bytes < bytes + align_gap_len); in btrfs_find_space_for_alloc()
2152 entry->bytes -= bytes + align_gap_len; in btrfs_find_space_for_alloc()
2153 if (!entry->bytes) in btrfs_find_space_for_alloc()
2154 kmem_cache_free(btrfs_free_space_cachep, entry); in btrfs_find_space_for_alloc()
2156 link_free_space(ctl, entry); in btrfs_find_space_for_alloc()
2212 struct btrfs_free_space *entry, in btrfs_alloc_from_bitmap() argument
2224 err = search_bitmap(ctl, entry, &search_start, &search_bytes); in btrfs_alloc_from_bitmap()
2229 __bitmap_clear_bits(ctl, entry, ret, bytes); in btrfs_alloc_from_bitmap()
2244 struct btrfs_free_space *entry = NULL; in btrfs_alloc_from_cluster() local
2259 entry = rb_entry(node, struct btrfs_free_space, offset_index); in btrfs_alloc_from_cluster()
2261 if (entry->bytes < bytes || in btrfs_alloc_from_cluster()
2262 (!entry->bitmap && entry->offset < min_start)) { in btrfs_alloc_from_cluster()
2263 node = rb_next(&entry->offset_index); in btrfs_alloc_from_cluster()
2266 entry = rb_entry(node, struct btrfs_free_space, in btrfs_alloc_from_cluster()
2271 if (entry->bitmap) { in btrfs_alloc_from_cluster()
2273 cluster, entry, bytes, in btrfs_alloc_from_cluster()
2276 node = rb_next(&entry->offset_index); in btrfs_alloc_from_cluster()
2279 entry = rb_entry(node, struct btrfs_free_space, in btrfs_alloc_from_cluster()
2285 ret = entry->offset; in btrfs_alloc_from_cluster()
2287 entry->offset += bytes; in btrfs_alloc_from_cluster()
2288 entry->bytes -= bytes; in btrfs_alloc_from_cluster()
2291 if (entry->bytes == 0) in btrfs_alloc_from_cluster()
2292 rb_erase(&entry->offset_index, &cluster->root); in btrfs_alloc_from_cluster()
2304 if (entry->bytes == 0) { in btrfs_alloc_from_cluster()
2306 if (entry->bitmap) { in btrfs_alloc_from_cluster()
2307 kfree(entry->bitmap); in btrfs_alloc_from_cluster()
2311 kmem_cache_free(btrfs_free_space_cachep, entry); in btrfs_alloc_from_cluster()
2320 struct btrfs_free_space *entry, in btrfs_bitmap_cluster() argument
2335 i = offset_to_bit(entry->offset, ctl->unit, in btrfs_bitmap_cluster()
2336 max_t(u64, offset, entry->offset)); in btrfs_bitmap_cluster()
2342 for_each_set_bit_from(i, entry->bitmap, BITS_PER_BITMAP) { in btrfs_bitmap_cluster()
2343 next_zero = find_next_zero_bit(entry->bitmap, in btrfs_bitmap_cluster()
2370 cluster->window_start = start * ctl->unit + entry->offset; in btrfs_bitmap_cluster()
2371 rb_erase(&entry->offset_index, &ctl->free_space_offset); in btrfs_bitmap_cluster()
2372 ret = tree_insert_offset(&cluster->root, entry->offset, in btrfs_bitmap_cluster()
2373 &entry->offset_index, 1); in btrfs_bitmap_cluster()
2394 struct btrfs_free_space *entry = NULL; in setup_cluster_no_bitmap() local
2402 entry = tree_search_offset(ctl, offset, 0, 1); in setup_cluster_no_bitmap()
2403 if (!entry) in setup_cluster_no_bitmap()
2410 while (entry->bitmap || entry->bytes < min_bytes) { in setup_cluster_no_bitmap()
2411 if (entry->bitmap && list_empty(&entry->list)) in setup_cluster_no_bitmap()
2412 list_add_tail(&entry->list, bitmaps); in setup_cluster_no_bitmap()
2413 node = rb_next(&entry->offset_index); in setup_cluster_no_bitmap()
2416 entry = rb_entry(node, struct btrfs_free_space, offset_index); in setup_cluster_no_bitmap()
2419 window_start = entry->offset; in setup_cluster_no_bitmap()
2420 window_free = entry->bytes; in setup_cluster_no_bitmap()
2421 max_extent = entry->bytes; in setup_cluster_no_bitmap()
2422 first = entry; in setup_cluster_no_bitmap()
2423 last = entry; in setup_cluster_no_bitmap()
2425 for (node = rb_next(&entry->offset_index); node; in setup_cluster_no_bitmap()
2426 node = rb_next(&entry->offset_index)) { in setup_cluster_no_bitmap()
2427 entry = rb_entry(node, struct btrfs_free_space, offset_index); in setup_cluster_no_bitmap()
2429 if (entry->bitmap) { in setup_cluster_no_bitmap()
2430 if (list_empty(&entry->list)) in setup_cluster_no_bitmap()
2431 list_add_tail(&entry->list, bitmaps); in setup_cluster_no_bitmap()
2435 if (entry->bytes < min_bytes) in setup_cluster_no_bitmap()
2438 last = entry; in setup_cluster_no_bitmap()
2439 window_free += entry->bytes; in setup_cluster_no_bitmap()
2440 if (entry->bytes > max_extent) in setup_cluster_no_bitmap()
2441 max_extent = entry->bytes; in setup_cluster_no_bitmap()
2458 entry = rb_entry(node, struct btrfs_free_space, offset_index); in setup_cluster_no_bitmap()
2459 node = rb_next(&entry->offset_index); in setup_cluster_no_bitmap()
2460 if (entry->bitmap || entry->bytes < min_bytes) in setup_cluster_no_bitmap()
2463 rb_erase(&entry->offset_index, &ctl->free_space_offset); in setup_cluster_no_bitmap()
2464 ret = tree_insert_offset(&cluster->root, entry->offset, in setup_cluster_no_bitmap()
2465 &entry->offset_index, 0); in setup_cluster_no_bitmap()
2466 total_size += entry->bytes; in setup_cluster_no_bitmap()
2468 } while (node && entry != last); in setup_cluster_no_bitmap()
2486 struct btrfs_free_space *entry; in setup_cluster_bitmap() local
2497 entry = list_first_entry(bitmaps, struct btrfs_free_space, list); in setup_cluster_bitmap()
2498 if (entry->offset != bitmap_offset) { in setup_cluster_bitmap()
2499 entry = tree_search_offset(ctl, bitmap_offset, 1, 0); in setup_cluster_bitmap()
2500 if (entry && list_empty(&entry->list)) in setup_cluster_bitmap()
2501 list_add(&entry->list, bitmaps); in setup_cluster_bitmap()
2504 list_for_each_entry(entry, bitmaps, list) { in setup_cluster_bitmap()
2505 if (entry->bytes < bytes) in setup_cluster_bitmap()
2507 ret = btrfs_bitmap_cluster(block_group, entry, cluster, offset, in setup_cluster_bitmap()
2535 struct btrfs_free_space *entry, *tmp; in btrfs_find_space_cluster() local
2589 list_for_each_entry_safe(entry, tmp, &bitmaps, list) in btrfs_find_space_cluster()
2590 list_del_init(&entry->list); in btrfs_find_space_cluster()
2665 struct btrfs_free_space *entry; in trim_no_bitmap() local
2680 entry = tree_search_offset(ctl, start, 0, 1); in trim_no_bitmap()
2681 if (!entry) { in trim_no_bitmap()
2687 while (entry->bitmap) { in trim_no_bitmap()
2688 node = rb_next(&entry->offset_index); in trim_no_bitmap()
2693 entry = rb_entry(node, struct btrfs_free_space, in trim_no_bitmap()
2697 if (entry->offset >= end) { in trim_no_bitmap()
2702 extent_start = entry->offset; in trim_no_bitmap()
2703 extent_bytes = entry->bytes; in trim_no_bitmap()
2711 unlink_free_space(ctl, entry); in trim_no_bitmap()
2712 kmem_cache_free(btrfs_free_space_cachep, entry); in trim_no_bitmap()
2738 struct btrfs_free_space *entry; in trim_bitmaps() local
2754 entry = tree_search_offset(ctl, offset, 1, 0); in trim_bitmaps()
2755 if (!entry) { in trim_bitmaps()
2762 ret2 = search_bitmap(ctl, entry, &start, &bytes); in trim_bitmaps()
2775 bitmap_clear_bits(ctl, entry, start, bytes); in trim_bitmaps()
2776 if (entry->bytes == 0) in trim_bitmaps()
2777 free_bitmap(ctl, entry); in trim_bitmaps()
2831 struct btrfs_free_space *entry = NULL; in btrfs_find_ino_for_alloc() local
2839 entry = rb_entry(rb_first(&ctl->free_space_offset), in btrfs_find_ino_for_alloc()
2842 if (!entry->bitmap) { in btrfs_find_ino_for_alloc()
2843 ino = entry->offset; in btrfs_find_ino_for_alloc()
2845 unlink_free_space(ctl, entry); in btrfs_find_ino_for_alloc()
2846 entry->offset++; in btrfs_find_ino_for_alloc()
2847 entry->bytes--; in btrfs_find_ino_for_alloc()
2848 if (!entry->bytes) in btrfs_find_ino_for_alloc()
2849 kmem_cache_free(btrfs_free_space_cachep, entry); in btrfs_find_ino_for_alloc()
2851 link_free_space(ctl, entry); in btrfs_find_ino_for_alloc()
2857 ret = search_bitmap(ctl, entry, &offset, &count); in btrfs_find_ino_for_alloc()
2862 bitmap_clear_bits(ctl, entry, offset, 1); in btrfs_find_ino_for_alloc()
2863 if (entry->bytes == 0) in btrfs_find_ino_for_alloc()
2864 free_bitmap(ctl, entry); in btrfs_find_ino_for_alloc()