|
@@ -199,12 +199,14 @@ int try_release_extent_mapping(struct extent_map_tree *map,
|
|
|
struct extent_io_tree *tree, struct page *page,
|
|
|
gfp_t mask);
|
|
|
int try_release_extent_buffer(struct page *page);
|
|
|
-int lock_extent(struct extent_io_tree *tree, u64 start, u64 end);
|
|
|
int lock_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- unsigned bits, struct extent_state **cached);
|
|
|
-int unlock_extent(struct extent_io_tree *tree, u64 start, u64 end);
|
|
|
-int unlock_extent_cached(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- struct extent_state **cached, gfp_t mask);
|
|
|
+ struct extent_state **cached);
|
|
|
+
|
|
|
+static inline int lock_extent(struct extent_io_tree *tree, u64 start, u64 end)
|
|
|
+{
|
|
|
+ return lock_extent_bits(tree, start, end, NULL);
|
|
|
+}
|
|
|
+
|
|
|
int try_lock_extent(struct extent_io_tree *tree, u64 start, u64 end);
|
|
|
int extent_read_full_page(struct extent_io_tree *tree, struct page *page,
|
|
|
get_extent_t *get_extent, int mirror_num);
|
|
@@ -221,39 +223,105 @@ void free_extent_state(struct extent_state *state);
|
|
|
int test_range_bit(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
unsigned bits, int filled,
|
|
|
struct extent_state *cached_state);
|
|
|
-int clear_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- unsigned bits, gfp_t mask);
|
|
|
int clear_record_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
unsigned bits, gfp_t mask,
|
|
|
struct extent_changeset *changeset);
|
|
|
int clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
unsigned bits, int wake, int delete,
|
|
|
struct extent_state **cached, gfp_t mask);
|
|
|
-int set_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- unsigned bits, gfp_t mask);
|
|
|
+
|
|
|
+static inline int unlock_extent(struct extent_io_tree *tree, u64 start, u64 end)
|
|
|
+{
|
|
|
+ return clear_extent_bit(tree, start, end, EXTENT_LOCKED, 1, 0, NULL,
|
|
|
+ GFP_NOFS);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int unlock_extent_cached(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, struct extent_state **cached, gfp_t mask)
|
|
|
+{
|
|
|
+ return clear_extent_bit(tree, start, end, EXTENT_LOCKED, 1, 0, cached,
|
|
|
+ mask);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int clear_extent_bits(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, unsigned bits, gfp_t mask)
|
|
|
+{
|
|
|
+ int wake = 0;
|
|
|
+
|
|
|
+ if (bits & EXTENT_LOCKED)
|
|
|
+ wake = 1;
|
|
|
+
|
|
|
+ return clear_extent_bit(tree, start, end, bits, wake, 0, NULL, mask);
|
|
|
+}
|
|
|
+
|
|
|
int set_record_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
unsigned bits, gfp_t mask,
|
|
|
struct extent_changeset *changeset);
|
|
|
int set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
unsigned bits, u64 *failed_start,
|
|
|
struct extent_state **cached_state, gfp_t mask);
|
|
|
-int set_extent_uptodate(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- struct extent_state **cached_state, gfp_t mask);
|
|
|
-int clear_extent_uptodate(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- struct extent_state **cached_state, gfp_t mask);
|
|
|
-int set_extent_new(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- gfp_t mask);
|
|
|
-int set_extent_dirty(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- gfp_t mask);
|
|
|
-int clear_extent_dirty(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- gfp_t mask);
|
|
|
+
|
|
|
+static inline int set_extent_bits(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, unsigned bits, gfp_t mask)
|
|
|
+{
|
|
|
+ return set_extent_bit(tree, start, end, bits, NULL, NULL, mask);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int clear_extent_uptodate(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, struct extent_state **cached_state, gfp_t mask)
|
|
|
+{
|
|
|
+ return clear_extent_bit(tree, start, end, EXTENT_UPTODATE, 0, 0,
|
|
|
+ cached_state, mask);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int set_extent_dirty(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, gfp_t mask)
|
|
|
+{
|
|
|
+ return set_extent_bit(tree, start, end, EXTENT_DIRTY, NULL,
|
|
|
+ NULL, mask);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int clear_extent_dirty(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, gfp_t mask)
|
|
|
+{
|
|
|
+ return clear_extent_bit(tree, start, end,
|
|
|
+ EXTENT_DIRTY | EXTENT_DELALLOC |
|
|
|
+ EXTENT_DO_ACCOUNTING, 0, 0, NULL, mask);
|
|
|
+}
|
|
|
+
|
|
|
int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
unsigned bits, unsigned clear_bits,
|
|
|
struct extent_state **cached_state, gfp_t mask);
|
|
|
-int set_extent_delalloc(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- struct extent_state **cached_state, gfp_t mask);
|
|
|
-int set_extent_defrag(struct extent_io_tree *tree, u64 start, u64 end,
|
|
|
- struct extent_state **cached_state, gfp_t mask);
|
|
|
+
|
|
|
+static inline int set_extent_delalloc(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, struct extent_state **cached_state, gfp_t mask)
|
|
|
+{
|
|
|
+ return set_extent_bit(tree, start, end,
|
|
|
+ EXTENT_DELALLOC | EXTENT_UPTODATE,
|
|
|
+ NULL, cached_state, mask);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int set_extent_defrag(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, struct extent_state **cached_state, gfp_t mask)
|
|
|
+{
|
|
|
+ return set_extent_bit(tree, start, end,
|
|
|
+ EXTENT_DELALLOC | EXTENT_UPTODATE | EXTENT_DEFRAG,
|
|
|
+ NULL, cached_state, mask);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int set_extent_new(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, gfp_t mask)
|
|
|
+{
|
|
|
+ return set_extent_bit(tree, start, end, EXTENT_NEW, NULL, NULL, mask);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int set_extent_uptodate(struct extent_io_tree *tree, u64 start,
|
|
|
+ u64 end, struct extent_state **cached_state, gfp_t mask)
|
|
|
+{
|
|
|
+ return set_extent_bit(tree, start, end, EXTENT_UPTODATE, NULL,
|
|
|
+ cached_state, mask);
|
|
|
+}
|
|
|
+
|
|
|
int find_first_extent_bit(struct extent_io_tree *tree, u64 start,
|
|
|
u64 *start_ret, u64 *end_ret, unsigned bits,
|
|
|
struct extent_state **cached_state);
|