Now that allocations that are allowed to sleep can't fail,
 convert_extent_bit has no more error conditions and we can assume the
 return value will be 0 and return void to callers.

Signed-off-by: Jeff Mahoney <je...@suse.com>
---
 fs/btrfs/extent_io.c |   18 ++++++++++++++----
 fs/btrfs/extent_io.h |    4 ++--
 2 files changed, 16 insertions(+), 6 deletions(-)

--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -1011,8 +1011,8 @@ int set_extent_bit_excl(struct extent_io
  * converting from say DELALLOC to DIRTY.  This is not meant to be used with
  * boundary bits like LOCK.
  */
-int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
-                      int bits, int clear_bits, gfp_t mask)
+static int __convert_extent_bit(struct extent_io_tree *tree, u64 start,
+                                u64 end, int bits, int clear_bits, gfp_t mask)
 {
        struct extent_state *state;
        struct extent_state *prealloc = NULL;
@@ -1020,9 +1020,10 @@ int convert_extent_bit(struct extent_io_
        int err = 0;
        u64 last_start;
        u64 last_end;
+       int wait = mask & __GFP_WAIT;
 
 again:
-       if (!prealloc && (mask & __GFP_WAIT))
+       if (!prealloc && !wait)
                prealloc = alloc_extent_state_nofail(mask);
 
        spin_lock(&tree->lock);
@@ -1176,11 +1177,20 @@ search_again:
        if (start > end)
                goto out;
        spin_unlock(&tree->lock);
-       if (mask & __GFP_WAIT)
+       if (wait)
                cond_resched();
        goto again;
 }
 
+void convert_extent_bit(struct extent_io_tree *tree, u64 start,
+                       u64 end, int bits, int clear_bits, gfp_t mask)
+{
+       int ret;
+       WARN_ON(!(mask & __GFP_WAIT));
+       ret = __convert_extent_bit(tree, start, end, bits, clear_bits, mask);
+       BUG_ON(ret < 0);
+}
+
 /* wrappers around set/clear extent bit */
 void set_extent_dirty(struct extent_io_tree *tree, u64 start, u64 end)
 {
--- a/fs/btrfs/extent_io.h
+++ b/fs/btrfs/extent_io.h
@@ -233,8 +233,8 @@ void set_extent_uptodate(struct extent_i
 void set_extent_new(struct extent_io_tree *tree, u64 start, u64 end);
 void set_extent_dirty(struct extent_io_tree *tree, u64 start, u64 end);
 void clear_extent_dirty(struct extent_io_tree *tree, u64 start, u64 end);
-int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
-                      int bits, int clear_bits, gfp_t mask);
+void convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
+                       int bits, int clear_bits, gfp_t mask);
 void set_extent_delalloc(struct extent_io_tree *tree, u64 start, u64 end,
                         struct extent_state **cached_state);
 int find_first_extent_bit(struct extent_io_tree *tree, u64 start,



--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to