]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
btrfs: make try_release_extent_mapping() return a bool
authorFilipe Manana <fdmanana@suse.com>
Tue, 16 Apr 2024 19:52:30 +0000 (20:52 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 7 May 2024 19:31:07 +0000 (21:31 +0200)
Currently try_release_extent_mapping() as an int return type, but we
use it as a boolean. Its only caller, the release folio callback, also
returns a boolean which corresponds to try_release_extent_mapping()'s
return value. So change its return value type to bool as well as its
helper try_release_extent_state().

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c
fs/btrfs/extent_io.h
fs/btrfs/inode.c

index 2230e6b6ba95e830fac44c650bc04626c9b4abf3..a9f9f5abdf530cc55c9da54f27f1a30c94ebe0ff 100644 (file)
@@ -2355,19 +2355,20 @@ int extent_invalidate_folio(struct extent_io_tree *tree,
  * are locked or under IO and drops the related state bits if it is safe
  * to drop the page.
  */
-static int try_release_extent_state(struct extent_io_tree *tree,
+static bool try_release_extent_state(struct extent_io_tree *tree,
                                    struct page *page, gfp_t mask)
 {
        u64 start = page_offset(page);
        u64 end = start + PAGE_SIZE - 1;
-       int ret = 1;
+       bool ret;
 
        if (test_range_bit_exists(tree, start, end, EXTENT_LOCKED)) {
-               ret = 0;
+               ret = false;
        } else {
                u32 clear_bits = ~(EXTENT_LOCKED | EXTENT_NODATASUM |
                                   EXTENT_DELALLOC_NEW | EXTENT_CTLBITS |
                                   EXTENT_QGROUP_RESERVED);
+               int ret2;
 
                /*
                 * At this point we can safely clear everything except the
@@ -2375,15 +2376,15 @@ static int try_release_extent_state(struct extent_io_tree *tree,
                 * The delalloc new bit will be cleared by ordered extent
                 * completion.
                 */
-               ret = __clear_extent_bit(tree, start, end, clear_bits, NULL, NULL);
+               ret2 = __clear_extent_bit(tree, start, end, clear_bits, NULL, NULL);
 
                /* if clear_extent_bit failed for enomem reasons,
                 * we can't allow the release to continue.
                 */
-               if (ret < 0)
-                       ret = 0;
+               if (ret2 < 0)
+                       ret = false;
                else
-                       ret = 1;
+                       ret = true;
        }
        return ret;
 }
@@ -2393,7 +2394,7 @@ static int try_release_extent_state(struct extent_io_tree *tree,
  * in the range corresponding to the page, both state records and extent
  * map records are removed
  */
-int try_release_extent_mapping(struct page *page, gfp_t mask)
+bool try_release_extent_mapping(struct page *page, gfp_t mask)
 {
        u64 start = page_offset(page);
        u64 end = start + PAGE_SIZE - 1;
index c81a9b546c9f8e5c79bb81db9a1ce364abcf3a53..f38397765e90f57bd870c6192c890908fbc4c71a 100644 (file)
@@ -230,7 +230,7 @@ static inline void extent_changeset_free(struct extent_changeset *changeset)
        kfree(changeset);
 }
 
-int try_release_extent_mapping(struct page *page, gfp_t mask);
+bool try_release_extent_mapping(struct page *page, gfp_t mask);
 int try_release_extent_buffer(struct page *page);
 
 int btrfs_read_folio(struct file *file, struct folio *folio);
index 1dde8085271e04adfa87ba17294fb5a0cdd62c36..eb0dc913c33bca4dc1655e7028301c73ae079fc5 100644 (file)
@@ -7899,13 +7899,12 @@ static void wait_subpage_spinlock(struct page *page)
 
 static bool __btrfs_release_folio(struct folio *folio, gfp_t gfp_flags)
 {
-       int ret = try_release_extent_mapping(&folio->page, gfp_flags);
-
-       if (ret == 1) {
+       if (try_release_extent_mapping(&folio->page, gfp_flags)) {
                wait_subpage_spinlock(&folio->page);
                clear_page_extent_mapped(&folio->page);
+               return true;
        }
-       return ret;
+       return false;
 }
 
 static bool btrfs_release_folio(struct folio *folio, gfp_t gfp_flags)