Lines Matching refs:start
77 static u64 range_end(u64 start, u64 len)
79 if (start + len < start)
81 return start + len;
90 u64 end = range_end(em->start, em->len);
97 if (em->start < entry->start) {
99 } else if (em->start >= extent_map_end(entry)) {
108 while (parent && em->start >= extent_map_end(entry)) {
113 if (end > entry->start && em->start < extent_map_end(entry))
118 while (parent && em->start < entry->start) {
123 if (end > entry->start && em->start < extent_map_end(entry))
151 if (offset < entry->start)
176 while (prev && offset < prev_entry->start) {
217 if (extent_map_end(prev) == next->start &&
247 if (em->start != 0) {
252 em->start = merge->start;
287 * @start: logical offset in the file
295 int unpin_extent_cache(struct extent_map_tree *tree, u64 start, u64 len,
303 em = lookup_extent_mapping(tree, start, len);
305 WARN_ON(!em || em->start != start);
312 em->mod_start = em->start;
323 em->mod_start = em->start;
348 em->mod_start = em->start;
425 u64 start, u64 len, int strict)
430 u64 end = range_end(start, len);
432 rb_node = __tree_search(&tree->map.rb_root, start, &prev_or_next);
442 if (strict && !(end > em->start && start < extent_map_end(em)))
450 * Lookup extent_map that intersects @start + @len range.
453 * @start: byte offset to start the search
457 * [start, len] range. There may be additional objects in the tree that
462 u64 start, u64 len)
464 return __lookup_extent_mapping(tree, start, len, 1);
468 * Find a nearby extent map intersecting @start + @len (not an exact search).
471 * @start: byte offset to start the search
475 * [start, len] range.
480 u64 start, u64 len)
482 return __lookup_extent_mapping(tree, start, len, 0);
557 u64 start;
561 BUG_ON(map_start < em->start || map_start >= extent_map_end(em));
563 if (existing->start > map_start) {
571 start = prev ? extent_map_end(prev) : em->start;
572 start = max_t(u64, start, em->start);
573 end = next ? next->start : extent_map_end(em);
575 start_diff = start - em->start;
576 em->start = start;
577 em->len = end - start;
592 * @start: start of the logical range btrfs_get_extent() is requesting
595 * Note that @em_in's range may be different from [start, start+len),
600 * a) Returning the existing extent in @em_in if @start is within the
609 struct extent_map **em_in, u64 start, u64 len)
619 ASSERT(em->start == 0);
631 existing = search_extent_mapping(em_tree, start, len);
633 trace_btrfs_handle_em_exist(fs_info, existing, em, start, len);
639 if (start >= existing->start &&
640 start < extent_map_end(existing)) {
645 u64 orig_start = em->start;
650 * the [start, start + len) range which overlaps
653 em, start);
658 "unexpected error %d: merge existing(start %llu len %llu) with em(start %llu len %llu)\n",
659 ret, existing->start, existing->len,
697 * @start: Start offset of the range.
701 * This drops all the extent maps that intersect the given range [@start, @end].
707 void btrfs_drop_extent_map_range(struct btrfs_inode *inode, u64 start, u64 end,
714 u64 len = end - start + 1;
716 WARN_ON(end < start);
718 if (start == 0 && !skip_pinned) {
740 em = lookup_extent_mapping(em_tree, start, len);
754 if (next_em->start < end)
762 start = em_end;
780 if (em->start >= start && em_end <= end)
786 if (em->start < start) {
793 split->start = em->start;
794 split->len = start - em->start;
808 split->orig_start = split->start;
830 split->start = end;
846 const u64 diff = start + len - em->start;
854 split->orig_start = split->start;
897 if ((em->start < start || em_end > end) && modified) {
939 const u64 end = new_em->start + new_em->len - 1;
954 btrfs_drop_extent_map_range(inode, new_em->start, end, false);
964 * Split off the first pre bytes from the extent_map at [start, start + len],
969 int split_extent_map(struct btrfs_inode *inode, u64 start, u64 len, u64 pre,
991 lock_extent(&inode->io_tree, start, start + len - 1, NULL);
993 em = lookup_extent_mapping(em_tree, start, len);
1009 /* First, replace the em with a new extent_map starting from * em->start */
1010 split_pre->start = em->start;
1012 split_pre->orig_start = split_pre->start;
1025 * [em->start, em->start + pre]
1029 split_mid->start = em->start + pre;
1031 split_mid->orig_start = split_mid->start;
1048 unlock_extent(&inode->io_tree, start, start + len - 1, NULL);