Lines Matching full:bytes

32 	u64 bytes;  member
42 u64 *bytes, bool for_alloc);
47 u64 bytes);
551 static int io_ctl_add_entry(struct btrfs_io_ctl *io_ctl, u64 offset, u64 bytes, in io_ctl_add_entry() argument
561 put_unaligned_le64(bytes, &entry->bytes); in io_ctl_add_entry()
635 entry->bytes = get_unaligned_le64(&e->bytes); in io_ctl_read_entry()
692 * bytes we can have, or whatever is less than that. in recalculate_thresholds()
793 if (!e->bytes) { in __load_free_space_cache()
873 info->bytes); in copy_free_space_cache()
877 u64 bytes = ctl->unit; in copy_free_space_cache() local
879 while (search_bitmap(ctl, info, &offset, &bytes, in copy_free_space_cache()
882 bytes); in copy_free_space_cache()
885 bitmap_clear_bits(ctl, info, offset, bytes); in copy_free_space_cache()
887 bytes = ctl->unit; in copy_free_space_cache()
1043 ret = io_ctl_add_entry(io_ctl, e->offset, e->bytes, in write_cache_extent_entries()
1073 trim_entry->bytes, NULL); in write_cache_extent_entries()
1508 static inline unsigned long bytes_to_bits(u64 bytes, u32 unit) in bytes_to_bits() argument
1510 return (unsigned long)(div_u64(bytes, unit)); in bytes_to_bits()
1583 * want a section that has at least bytes size and comes at or after the given
1641 prev->offset + prev->bytes > offset) in tree_search_offset()
1673 prev->offset + prev->bytes > offset) in tree_search_offset()
1678 } else if (entry->offset + entry->bytes > offset) in tree_search_offset()
1690 if (entry->offset + entry->bytes > offset) in tree_search_offset()
1711 ctl->discardable_bytes[BTRFS_STAT_CURR] -= info->bytes; in __unlink_free_space()
1719 ctl->free_space -= info->bytes; in unlink_free_space()
1727 ASSERT(info->bytes || info->bitmap); in link_free_space()
1735 ctl->discardable_bytes[BTRFS_STAT_CURR] += info->bytes; in link_free_space()
1738 ctl->free_space += info->bytes; in link_free_space()
1745 u64 offset, u64 bytes) in __bitmap_clear_bits() argument
1751 count = bytes_to_bits(bytes, ctl->unit); in __bitmap_clear_bits()
1757 info->bytes -= bytes; in __bitmap_clear_bits()
1770 ctl->discardable_bytes[BTRFS_STAT_CURR] -= bytes; in __bitmap_clear_bits()
1776 u64 bytes) in bitmap_clear_bits() argument
1778 __bitmap_clear_bits(ctl, info, offset, bytes); in bitmap_clear_bits()
1779 ctl->free_space -= bytes; in bitmap_clear_bits()
1784 u64 bytes) in bitmap_set_bits() argument
1790 count = bytes_to_bits(bytes, ctl->unit); in bitmap_set_bits()
1796 info->bytes += bytes; in bitmap_set_bits()
1797 ctl->free_space += bytes; in bitmap_set_bits()
1808 ctl->discardable_bytes[BTRFS_STAT_CURR] += bytes; in bitmap_set_bits()
1813 * If we can not find suitable extent, we will use bytes to record
1818 u64 *bytes, bool for_alloc) in search_bitmap() argument
1832 bitmap_info->max_extent_size < *bytes) { in search_bitmap()
1833 *bytes = bitmap_info->max_extent_size; in search_bitmap()
1839 bits = bytes_to_bits(*bytes, ctl->unit); in search_bitmap()
1860 *bytes = (u64)(found_bits) * ctl->unit; in search_bitmap()
1864 *bytes = (u64)(max_bits) * ctl->unit; in search_bitmap()
1865 bitmap_info->max_extent_size = *bytes; in search_bitmap()
1873 return entry->bytes; in get_max_extent_size()
1876 /* Cache the size of the max extent in bytes */
1878 find_free_space(struct btrfs_free_space_ctl *ctl, u64 *offset, u64 *bytes, in find_free_space() argument
1896 if (entry->bytes < *bytes) { in find_free_space()
1905 if (*bytes >= align) { in find_free_space()
1915 if (entry->bytes < *bytes + align_off) { in find_free_space()
1922 u64 size = *bytes; in find_free_space()
1927 *bytes = size; in find_free_space()
1938 *bytes = entry->bytes - align_off; in find_free_space()
1949 info->bytes = 0; in add_new_bitmap()
1966 if (bitmap_info->bytes && !btrfs_free_space_trimmed(bitmap_info)) { in free_bitmap()
1969 ctl->discardable_bytes[BTRFS_STAT_CURR] -= bitmap_info->bytes; in free_bitmap()
1981 u64 *offset, u64 *bytes) in remove_from_bitmap() argument
2005 search_bytes = min(search_bytes, *bytes); in remove_from_bitmap()
2012 *bytes -= search_bytes; in remove_from_bitmap()
2014 if (*bytes) { in remove_from_bitmap()
2016 if (!bitmap_info->bytes) in remove_from_bitmap()
2020 * no entry after this bitmap, but we still have bytes to in remove_from_bitmap()
2050 } else if (!bitmap_info->bytes) in remove_from_bitmap()
2058 u64 bytes, enum btrfs_trim_state trim_state) in add_bytes_to_bitmap() argument
2071 ctl->discardable_bytes[BTRFS_STAT_CURR] += info->bytes; in add_bytes_to_bitmap()
2078 bytes_to_set = min(end - offset, bytes); in add_bytes_to_bitmap()
2083 * We set some bytes, we have no idea what the max extent size is in add_bytes_to_bitmap()
2105 if (!forced && info->bytes >= FORCE_EXTENT_THRESHOLD) in use_bitmap()
2120 if (info->bytes <= fs_info->sectorsize * 8) { in use_bitmap()
2152 u64 bytes, offset, bytes_added; in insert_into_bitmap() local
2156 bytes = info->bytes; in insert_into_bitmap()
2194 bytes, trim_state); in insert_into_bitmap()
2195 bytes -= bytes_added; in insert_into_bitmap()
2199 if (!bytes) { in insert_into_bitmap()
2213 bytes_added = add_bytes_to_bitmap(ctl, bitmap_info, offset, bytes, in insert_into_bitmap()
2215 bytes -= bytes_added; in insert_into_bitmap()
2219 if (!bytes) { in insert_into_bitmap()
2291 u64 bytes = info->bytes; in try_merge_free_space() local
2299 right_info = tree_search_offset(ctl, offset + bytes, 0, 0); in try_merge_free_space()
2313 info->bytes += right_info->bytes; in try_merge_free_space()
2320 left_info->offset + left_info->bytes == offset && in try_merge_free_space()
2327 info->bytes += left_info->bytes; in try_merge_free_space()
2342 const u64 end = info->offset + info->bytes; in steal_from_bitmap_to_end()
2344 u64 bytes; in steal_from_bitmap_to_end() local
2354 bytes = (j - i) * ctl->unit; in steal_from_bitmap_to_end()
2355 info->bytes += bytes; in steal_from_bitmap_to_end()
2362 bitmap_clear_bits(ctl, bitmap, end, bytes); in steal_from_bitmap_to_end()
2364 __bitmap_clear_bits(ctl, bitmap, end, bytes); in steal_from_bitmap_to_end()
2366 if (!bitmap->bytes) in steal_from_bitmap_to_end()
2381 u64 bytes; in steal_from_bitmap_to_front() local
2407 bytes = (i + 1) * ctl->unit; in steal_from_bitmap_to_front()
2409 bytes = (i - prev_j) * ctl->unit; in steal_from_bitmap_to_front()
2411 info->offset -= bytes; in steal_from_bitmap_to_front()
2412 info->bytes += bytes; in steal_from_bitmap_to_front()
2419 bitmap_clear_bits(ctl, bitmap, info->offset, bytes); in steal_from_bitmap_to_front()
2421 __bitmap_clear_bits(ctl, bitmap, info->offset, bytes); in steal_from_bitmap_to_front()
2423 if (!bitmap->bytes) in steal_from_bitmap_to_front()
2467 u64 offset, u64 bytes, in __btrfs_add_free_space() argument
2473 u64 filter_bytes = bytes; in __btrfs_add_free_space()
2482 info->bytes = bytes; in __btrfs_add_free_space()
2512 filter_bytes = max(filter_bytes, info->bytes); in __btrfs_add_free_space()
2631 u64 offset, u64 bytes) in btrfs_remove_free_space() argument
2651 offset + bytes) { in btrfs_remove_free_space()
2653 offset + bytes - block_group->start; in btrfs_remove_free_space()
2662 if (!bytes) in btrfs_remove_free_space()
2688 u64 to_free = min(bytes, info->bytes); in btrfs_remove_free_space()
2690 info->bytes -= to_free; in btrfs_remove_free_space()
2692 if (info->bytes) { in btrfs_remove_free_space()
2700 bytes -= to_free; in btrfs_remove_free_space()
2703 u64 old_end = info->bytes + info->offset; in btrfs_remove_free_space()
2705 info->bytes = offset - info->offset; in btrfs_remove_free_space()
2711 /* Not enough bytes in this entry to satisfy us */ in btrfs_remove_free_space()
2712 if (old_end < offset + bytes) { in btrfs_remove_free_space()
2713 bytes -= old_end - offset; in btrfs_remove_free_space()
2716 } else if (old_end == offset + bytes) { in btrfs_remove_free_space()
2723 offset + bytes, in btrfs_remove_free_space()
2724 old_end - (offset + bytes), in btrfs_remove_free_space()
2731 ret = remove_from_bitmap(ctl, info, &offset, &bytes); in btrfs_remove_free_space()
2744 u64 bytes) in btrfs_dump_free_space() argument
2765 if (info->bytes >= bytes && !block_group->ro) in btrfs_dump_free_space()
2767 btrfs_crit(fs_info, "entry offset %llu, bytes %llu, bitmap %s", in btrfs_dump_free_space()
2768 info->offset, info->bytes, in btrfs_dump_free_space()
2775 "%d blocks of free space at or bigger than bytes is", count); in btrfs_dump_free_space()
2838 entry->bytes; in __btrfs_return_cluster_to_free_space()
2848 entry->bytes; in __btrfs_return_cluster_to_free_space()
2942 u64 offset, u64 bytes, u64 empty_size, in btrfs_find_space_for_alloc() argument
2949 u64 bytes_search = bytes + empty_size; in btrfs_find_space_for_alloc()
2965 bitmap_clear_bits(ctl, entry, offset, bytes); in btrfs_find_space_for_alloc()
2968 atomic64_add(bytes, &discard_ctl->discard_bytes_saved); in btrfs_find_space_for_alloc()
2970 if (!entry->bytes) in btrfs_find_space_for_alloc()
2979 atomic64_add(bytes, &discard_ctl->discard_bytes_saved); in btrfs_find_space_for_alloc()
2981 entry->offset = offset + bytes; in btrfs_find_space_for_alloc()
2982 WARN_ON(entry->bytes < bytes + align_gap_len); in btrfs_find_space_for_alloc()
2984 entry->bytes -= bytes + align_gap_len; in btrfs_find_space_for_alloc()
2985 if (!entry->bytes) in btrfs_find_space_for_alloc()
3047 u64 bytes, u64 min_start, in btrfs_alloc_from_bitmap() argument
3053 u64 search_bytes = bytes; in btrfs_alloc_from_bitmap()
3057 search_bytes = bytes; in btrfs_alloc_from_bitmap()
3067 __bitmap_clear_bits(ctl, entry, ret, bytes); in btrfs_alloc_from_bitmap()
3073 * given a cluster, try to allocate 'bytes' from it, returns 0
3078 struct btrfs_free_cluster *cluster, u64 bytes, in btrfs_alloc_from_cluster() argument
3091 if (bytes > cluster->max_size) in btrfs_alloc_from_cluster()
3103 if (entry->bytes < bytes) in btrfs_alloc_from_cluster()
3107 if (entry->bytes < bytes || in btrfs_alloc_from_cluster()
3119 cluster, entry, bytes, in btrfs_alloc_from_cluster()
3130 cluster->window_start += bytes; in btrfs_alloc_from_cluster()
3134 entry->offset += bytes; in btrfs_alloc_from_cluster()
3135 entry->bytes -= bytes; in btrfs_alloc_from_cluster()
3149 atomic64_add(bytes, &discard_ctl->discard_bytes_saved); in btrfs_alloc_from_cluster()
3151 ctl->free_space -= bytes; in btrfs_alloc_from_cluster()
3153 ctl->discardable_bytes[BTRFS_STAT_CURR] -= bytes; in btrfs_alloc_from_cluster()
3156 if (entry->bytes == 0) { in btrfs_alloc_from_cluster()
3179 u64 offset, u64 bytes, in btrfs_bitmap_cluster() argument
3195 want_bits = bytes_to_bits(bytes, ctl->unit); in btrfs_bitmap_cluster()
3254 * Try to find a cluster with at least bytes total bytes, at least one
3260 struct list_head *bitmaps, u64 offset, u64 bytes, in setup_cluster_no_bitmap() argument
3280 while (entry->bitmap || entry->bytes < min_bytes) { in setup_cluster_no_bitmap()
3289 window_free = entry->bytes; in setup_cluster_no_bitmap()
3290 max_extent = entry->bytes; in setup_cluster_no_bitmap()
3304 if (entry->bytes < min_bytes) in setup_cluster_no_bitmap()
3308 window_free += entry->bytes; in setup_cluster_no_bitmap()
3309 if (entry->bytes > max_extent) in setup_cluster_no_bitmap()
3310 max_extent = entry->bytes; in setup_cluster_no_bitmap()
3313 if (window_free < bytes || max_extent < cont1_bytes) in setup_cluster_no_bitmap()
3329 if (entry->bitmap || entry->bytes < min_bytes) in setup_cluster_no_bitmap()
3335 total_size += entry->bytes; in setup_cluster_no_bitmap()
3351 struct list_head *bitmaps, u64 offset, u64 bytes, in setup_cluster_bitmap() argument
3376 if (entry->bytes < bytes) in setup_cluster_bitmap()
3379 bytes, cont1_bytes, min_bytes); in setup_cluster_bitmap()
3393 * is to find at least bytes+empty_size.
3401 u64 offset, u64 bytes, u64 empty_size) in btrfs_find_space_cluster() argument
3418 cont1_bytes = min_bytes = bytes + empty_size; in btrfs_find_space_cluster()
3420 cont1_bytes = bytes; in btrfs_find_space_cluster()
3423 cont1_bytes = max(bytes, (bytes + empty_size) >> 2); in btrfs_find_space_cluster()
3433 if (ctl->free_space < bytes) { in btrfs_find_space_cluster()
3446 trace_btrfs_find_cluster(block_group, offset, bytes, empty_size, in btrfs_find_space_cluster()
3450 bytes + empty_size, in btrfs_find_space_cluster()
3454 offset, bytes + empty_size, in btrfs_find_space_cluster()
3491 u64 *total_trimmed, u64 start, u64 bytes, in do_trimming() argument
3501 const u64 end = start + bytes; in do_trimming()
3516 ret = btrfs_discard_extent(fs_info, start, bytes, &trimmed); in do_trimming()
3527 if (start + bytes < reserved_start + reserved_bytes) in do_trimming()
3530 __btrfs_add_free_space(fs_info, ctl, start, bytes, trim_state); in do_trimming()
3564 u64 bytes; in trim_no_bitmap() local
3594 extent_bytes = entry->bytes; in trim_no_bitmap()
3598 bytes = entry->bytes; in trim_no_bitmap()
3599 if (bytes < minlen) { in trim_no_bitmap()
3606 * Let bytes = BTRFS_MAX_DISCARD_SIZE + X. in trim_no_bitmap()
3611 bytes >= (max_discard_size + in trim_no_bitmap()
3613 bytes = max_discard_size; in trim_no_bitmap()
3616 entry->bytes -= max_discard_size; in trim_no_bitmap()
3623 bytes = min(extent_start + extent_bytes, end) - start; in trim_no_bitmap()
3624 if (bytes < minlen) { in trim_no_bitmap()
3636 trim_entry.bytes = extent_bytes; in trim_no_bitmap()
3640 ret = do_trimming(block_group, total_trimmed, start, bytes, in trim_no_bitmap()
3644 block_group->discard_cursor = start + bytes; in trim_no_bitmap()
3648 start += bytes; in trim_no_bitmap()
3695 ctl->discardable_bytes[BTRFS_STAT_CURR] += entry->bytes; in reset_trimming_bitmap()
3710 ctl->discardable_bytes[BTRFS_STAT_CURR] -= entry->bytes; in end_trimming_bitmap()
3727 u64 bytes; in trim_bitmaps() local
3772 bytes = minlen; in trim_bitmaps()
3773 ret2 = search_bitmap(ctl, entry, &start, &bytes, false); in trim_bitmaps()
3799 bytes = min(bytes, end - start); in trim_bitmaps()
3800 if (bytes < minlen || (async && maxlen && bytes > maxlen)) { in trim_bitmaps()
3807 * Let bytes = BTRFS_MAX_DISCARD_SIZE + X. in trim_bitmaps()
3814 bytes > (max_discard_size + minlen)) in trim_bitmaps()
3815 bytes = max_discard_size; in trim_bitmaps()
3817 bitmap_clear_bits(ctl, entry, start, bytes); in trim_bitmaps()
3818 if (entry->bytes == 0) in trim_bitmaps()
3823 trim_entry.bytes = bytes; in trim_bitmaps()
3827 ret = do_trimming(block_group, total_trimmed, start, bytes, in trim_bitmaps()
3828 start, bytes, 0, &trim_entry); in trim_bitmaps()
3840 start += bytes; in trim_bitmaps()
4008 u64 offset, u64 bytes, bool bitmap) in test_add_free_space_entry() argument
4027 info->bytes = bytes; in test_add_free_space_entry()
4055 bytes_added = add_bytes_to_bitmap(ctl, bitmap_info, offset, bytes, in test_add_free_space_entry()
4058 bytes -= bytes_added; in test_add_free_space_entry()
4062 if (bytes) in test_add_free_space_entry()
4078 u64 offset, u64 bytes) in test_check_exists() argument
4107 offset + bytes > bit_off) { in test_check_exists()
4117 if (tmp->offset + tmp->bytes < offset) in test_check_exists()
4119 if (offset + bytes < tmp->offset) { in test_check_exists()
4131 if (offset + bytes < tmp->offset) in test_check_exists()
4133 if (tmp->offset + tmp->bytes < offset) { in test_check_exists()
4150 if (offset > info->offset && offset < info->offset + info->bytes) in test_check_exists()