|
@@ -1031,46 +1031,6 @@ static int set_range_writeback(struct extent_io_tree *tree, u64 start, u64 end)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * find the first offset in the io tree with 'bits' set. zero is
|
|
|
- * returned if we find something, and *start_ret and *end_ret are
|
|
|
- * set to reflect the state struct that was found.
|
|
|
- *
|
|
|
- * If nothing was found, 1 is returned, < 0 on error
|
|
|
- */
|
|
|
-int find_first_extent_bit(struct extent_io_tree *tree, u64 start,
|
|
|
- u64 *start_ret, u64 *end_ret, int bits)
|
|
|
-{
|
|
|
- struct rb_node *node;
|
|
|
- struct extent_state *state;
|
|
|
- int ret = 1;
|
|
|
-
|
|
|
- spin_lock(&tree->lock);
|
|
|
- /*
|
|
|
- * this search will find all the extents that end after
|
|
|
- * our range starts.
|
|
|
- */
|
|
|
- node = tree_search(tree, start);
|
|
|
- if (!node)
|
|
|
- goto out;
|
|
|
-
|
|
|
- while (1) {
|
|
|
- state = rb_entry(node, struct extent_state, rb_node);
|
|
|
- if (state->end >= start && (state->state & bits)) {
|
|
|
- *start_ret = state->start;
|
|
|
- *end_ret = state->end;
|
|
|
- ret = 0;
|
|
|
- break;
|
|
|
- }
|
|
|
- node = rb_next(node);
|
|
|
- if (!node)
|
|
|
- break;
|
|
|
- }
|
|
|
-out:
|
|
|
- spin_unlock(&tree->lock);
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
/* find the first state struct with 'bits' set after 'start', and
|
|
|
* return it. tree->lock must be held. NULL will returned if
|
|
|
* nothing was found after 'start'
|
|
@@ -1102,6 +1062,30 @@ out:
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * find the first offset in the io tree with 'bits' set. zero is
|
|
|
+ * returned if we find something, and *start_ret and *end_ret are
|
|
|
+ * set to reflect the state struct that was found.
|
|
|
+ *
|
|
|
+ * If nothing was found, 1 is returned, < 0 on error
|
|
|
+ */
|
|
|
+int find_first_extent_bit(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 *start_ret, u64 *end_ret, int bits)
|
|
|
+{
|
|
|
+ struct extent_state *state;
|
|
|
+ int ret = 1;
|
|
|
+
|
|
|
+ spin_lock(&tree->lock);
|
|
|
+ state = find_first_extent_bit_state(tree, start, bits);
|
|
|
+ if (state) {
|
|
|
+ *start_ret = state->start;
|
|
|
+ *end_ret = state->end;
|
|
|
+ ret = 0;
|
|
|
+ }
|
|
|
+ spin_unlock(&tree->lock);
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* find a contiguous range of bytes in the file marked as delalloc, not
|
|
|
* more than 'max_bytes'. start and end are used to return the range,
|