btrfs: make try_release_extent_mapping() return a bool
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>
This commit is contained in:
parent
2e504418e4
commit
de6f14e83e
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user