Lines Matching full:start

73 static u64 range_end(u64 start, u64 len)  in range_end()  argument
75 if (start + len < start) in range_end()
77 return start + len; in range_end()
97 u64 end = range_end(em->start, em->len); in tree_insert()
103 if (em->start < entry->start) in tree_insert()
105 else if (em->start >= btrfs_extent_map_end(entry)) in tree_insert()
112 while (parent && em->start >= btrfs_extent_map_end(entry)) { in tree_insert()
117 if (end > entry->start && em->start < btrfs_extent_map_end(entry)) in tree_insert()
122 while (parent && em->start < entry->start) { in tree_insert()
127 if (end > entry->start && em->start < btrfs_extent_map_end(entry)) in tree_insert()
155 if (offset < entry->start) in tree_search()
180 while (prev && offset < prev_entry->start) { in tree_search()
233 if (btrfs_extent_map_end(prev) != next->start) in mergeable_maps()
313 "%s, start=%llu len=%llu disk_bytenr=%llu disk_num_bytes=%llu ram_bytes=%llu offset=%llu flags=0x%x… in dump_extent_map()
314 prefix, em->start, em->len, em->disk_bytenr, em->disk_num_bytes, in dump_extent_map()
362 if (em->start != 0) { in try_merge_map()
367 em->start = merge->start; in try_merge_map()
400 * @start: logical offset in the file
410 * -EUCLEAN if the found extent does not match the expected start
412 int btrfs_unpin_extent_cache(struct btrfs_inode *inode, u64 start, u64 len, u64 gen) in btrfs_unpin_extent_cache() argument
420 em = btrfs_lookup_extent_mapping(tree, start, len); in btrfs_unpin_extent_cache()
426 start, start + len, gen); in btrfs_unpin_extent_cache()
431 if (WARN_ON(em->start != start)) { in btrfs_unpin_extent_cache()
433 "found extent map for inode %llu (root %lld) with unexpected start offset %llu when unpinning exten… in btrfs_unpin_extent_cache()
435 em->start, start, start + len, gen); in btrfs_unpin_extent_cache()
512 u64 start, u64 len, bool strict) in lookup_extent_mapping() argument
517 u64 end = range_end(start, len); in lookup_extent_mapping()
519 rb_node = tree_search(&tree->root, start, &prev_or_next); in lookup_extent_mapping()
529 if (strict && !(end > em->start && start < btrfs_extent_map_end(em))) in lookup_extent_mapping()
537 * Lookup extent_map that intersects @start + @len range.
540 * @start: byte offset to start the search
544 * [start, len] range. There may be additional objects in the tree that
549 u64 start, u64 len) in btrfs_lookup_extent_mapping() argument
551 return lookup_extent_mapping(tree, start, len, true); in btrfs_lookup_extent_mapping()
555 * Find a nearby extent map intersecting @start + @len (not an exact search).
558 * @start: byte offset to start the search
562 * [start, len] range.
567 u64 start, u64 len) in btrfs_search_extent_mapping() argument
569 return lookup_extent_mapping(tree, start, len, false); in btrfs_search_extent_mapping()
649 u64 start; in merge_extent_mapping() local
653 if (map_start < em->start || map_start >= btrfs_extent_map_end(em)) in merge_extent_mapping()
656 if (existing->start > map_start) { in merge_extent_mapping()
664 start = prev ? btrfs_extent_map_end(prev) : em->start; in merge_extent_mapping()
665 start = max_t(u64, start, em->start); in merge_extent_mapping()
666 end = next ? next->start : btrfs_extent_map_end(em); in merge_extent_mapping()
668 start_diff = start - em->start; in merge_extent_mapping()
669 em->start = start; in merge_extent_mapping()
670 em->len = end - start; in merge_extent_mapping()
681 * @start: start of the logical range btrfs_get_extent() is requesting
684 * Note that @em_in's range may be different from [start, start+len),
689 * a) Returning the existing extent in @em_in if @start is within the
697 struct extent_map **em_in, u64 start, u64 len) in btrfs_add_extent_mapping() argument
708 ASSERT(em->start == 0); in btrfs_add_extent_mapping()
718 existing = btrfs_search_extent_mapping(&inode->extent_tree, start, len); in btrfs_add_extent_mapping()
720 trace_btrfs_handle_em_exist(fs_info, existing, em, start, len); in btrfs_add_extent_mapping()
726 if (start >= existing->start && in btrfs_add_extent_mapping()
727 start < btrfs_extent_map_end(existing)) { in btrfs_add_extent_mapping()
732 u64 orig_start = em->start; in btrfs_add_extent_mapping()
737 * the [start, start + len) range which overlaps in btrfs_add_extent_mapping()
739 ret = merge_extent_mapping(inode, existing, em, start); in btrfs_add_extent_mapping()
744 "extent map merge error existing [%llu, %llu) with em [%llu, %llu) start %llu", in btrfs_add_extent_mapping()
745 existing->start, btrfs_extent_map_end(existing), in btrfs_add_extent_mapping()
746 orig_start, orig_start + orig_len, start); in btrfs_add_extent_mapping()
789 * @start: Start offset of the range.
793 * This drops all the extent maps that intersect the given range [@start, @end].
799 void btrfs_drop_extent_map_range(struct btrfs_inode *inode, u64 start, u64 end, in btrfs_drop_extent_map_range() argument
806 u64 len = end - start + 1; in btrfs_drop_extent_map_range()
808 WARN_ON(end < start); in btrfs_drop_extent_map_range()
810 if (start == 0 && !skip_pinned) { in btrfs_drop_extent_map_range()
832 em = btrfs_lookup_extent_mapping(em_tree, start, len); in btrfs_drop_extent_map_range()
845 if (next_em->start < end) in btrfs_drop_extent_map_range()
853 start = em_end; in btrfs_drop_extent_map_range()
870 if (em->start >= start && em_end <= end) in btrfs_drop_extent_map_range()
875 if (em->start < start) { in btrfs_drop_extent_map_range()
882 split->start = em->start; in btrfs_drop_extent_map_range()
883 split->len = start - em->start; in btrfs_drop_extent_map_range()
911 split->start = end; in btrfs_drop_extent_map_range()
919 split->offset = em->offset + end - em->start; in btrfs_drop_extent_map_range()
963 if ((em->start < start || em_end > end) && modified) { in btrfs_drop_extent_map_range()
1005 const u64 end = new_em->start + new_em->len - 1; in btrfs_replace_extent_map_range()
1020 btrfs_drop_extent_map_range(inode, new_em->start, end, false); in btrfs_replace_extent_map_range()
1030 * Split off the first pre bytes from the extent_map at [start, start + len],
1035 int btrfs_split_extent_map(struct btrfs_inode *inode, u64 start, u64 len, u64 pre, in btrfs_split_extent_map() argument
1057 btrfs_lock_extent(&inode->io_tree, start, start + len - 1, NULL); in btrfs_split_extent_map()
1059 em = btrfs_lookup_extent_mapping(em_tree, start, len); in btrfs_split_extent_map()
1075 /* First, replace the em with a new extent_map starting from * em->start */ in btrfs_split_extent_map()
1076 split_pre->start = em->start; in btrfs_split_extent_map()
1089 * [em->start, em->start + pre] in btrfs_split_extent_map()
1093 split_mid->start = em->start + pre; in btrfs_split_extent_map()
1110 btrfs_unlock_extent(&inode->io_tree, start, start + len - 1, NULL); in btrfs_split_extent_map()
1280 * that when processing the next root we start from its first inode. in btrfs_scan_root()