btrfs: sink gfp parameter to convert_extent_bit
authorDavid Sterba <dsterba@suse.com>
Tue, 26 Apr 2016 21:54:39 +0000 (23:54 +0200)
committerDavid Sterba <dsterba@suse.com>
Fri, 29 Apr 2016 11:48:14 +0000 (13:48 +0200)
Single caller passes GFP_NOFS. We can get rid of the
gfpflags_allow_blocking checks as NOFS can block but does not recurse to
filesystem through reclaim.

Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c
fs/btrfs/extent_io.h
fs/btrfs/transaction.c

index 8707bcc615ff972f11f4c0ecee4024cf7e605133..c1139bcf8870953354411521697e0bc998d17c50 100644 (file)
@@ -1078,17 +1078,18 @@ int set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
  * @bits:      the bits to set in this range
  * @clear_bits:        the bits to clear in this range
  * @cached_state:      state that we're going to cache
- * @mask:      the allocation mask
  *
  * This will go through and set bits for the given range.  If any states exist
  * already in this range they are set with the given bit and cleared of the
  * clear_bits.  This is only meant to be used by things that are mergeable, ie
  * converting from say DELALLOC to DIRTY.  This is not meant to be used with
  * boundary bits like LOCK.
+ *
+ * All allocations are done with GFP_NOFS.
  */
 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)
+                      struct extent_state **cached_state)
 {
        struct extent_state *state;
        struct extent_state *prealloc = NULL;
@@ -1103,7 +1104,7 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
        btrfs_debug_check_extent_io_range(tree, start, end);
 
 again:
-       if (!prealloc && gfpflags_allow_blocking(mask)) {
+       if (!prealloc) {
                /*
                 * Best effort, don't worry if extent state allocation fails
                 * here for the first iteration. We might have a cached state
@@ -1111,7 +1112,7 @@ again:
                 * extent state allocations are needed. We'll only know this
                 * after locking the tree.
                 */
-               prealloc = alloc_extent_state(mask);
+               prealloc = alloc_extent_state(GFP_NOFS);
                if (!prealloc && !first_iteration)
                        return -ENOMEM;
        }
@@ -1272,8 +1273,7 @@ search_again:
        if (start > end)
                goto out;
        spin_unlock(&tree->lock);
-       if (gfpflags_allow_blocking(mask))
-               cond_resched();
+       cond_resched();
        first_iteration = false;
        goto again;
 
index 94b37644604298748d8380ff06ac85e3126cab18..9c1f160c5984e2dadb5d3ebc549e0c1d4868209e 100644 (file)
@@ -287,7 +287,7 @@ static inline int clear_extent_dirty(struct extent_io_tree *tree, u64 start,
 
 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);
+                      struct extent_state **cached_state);
 
 static inline int set_extent_delalloc(struct extent_io_tree *tree, u64 start,
                u64 end, struct extent_state **cached_state)
index 43885e51b88299d1015d75c3eb2d138b67d2b6d8..98b93d9c6213e6af09f98724cc6ad5503d1917b4 100644 (file)
@@ -943,7 +943,7 @@ int btrfs_write_marked_extents(struct btrfs_root *root,
 
                err = convert_extent_bit(dirty_pages, start, end,
                                         EXTENT_NEED_WAIT,
-                                        mark, &cached_state, GFP_NOFS);
+                                        mark, &cached_state);
                /*
                 * convert_extent_bit can return -ENOMEM, which is most of the
                 * time a temporary error. So when it happens, ignore the error