]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - fs/btrfs/extent_io.c
Btrfs: don't release pages when we can't clear the uptodate bits
[mirror_ubuntu-hirsute-kernel.git] / fs / btrfs / extent_io.c
index 0418bf2c9757f08f15fe897652ee59d2d2534e88..e7aeba2427018041afb137c26bfaba213de98d98 100644 (file)
@@ -2822,9 +2822,17 @@ int try_release_extent_state(struct extent_map_tree *map,
                 * at this point we can safely clear everything except the
                 * locked bit and the nodatasum bit
                 */
-               clear_extent_bit(tree, start, end,
+               ret = clear_extent_bit(tree, start, end,
                                 ~(EXTENT_LOCKED | EXTENT_NODATASUM),
                                 0, 0, NULL, mask);
+
+               /* if clear_extent_bit failed for enomem reasons,
+                * we can't allow the release to continue.
+                */
+               if (ret < 0)
+                       ret = 0;
+               else
+                       ret = 1;
        }
        return ret;
 }