Skip to content

Commit e45c20d

Browse files
author
Matthew Wilcox (Oracle)
committed
gfs2: Convert to release_folio
Use a folio throughout gfs2_release_folio(). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Bob Peterson <rpeterso@redhat.com> Reviewed-by: Jeff Layton <jlayton@kernel.org>
1 parent c26cd04 commit e45c20d

3 files changed

Lines changed: 25 additions & 23 deletions

File tree

fs/gfs2/aops.c

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -691,38 +691,40 @@ static void gfs2_invalidate_folio(struct folio *folio, size_t offset,
691691
}
692692

693693
/**
694-
* gfs2_releasepage - free the metadata associated with a page
695-
* @page: the page that's being released
694+
* gfs2_release_folio - free the metadata associated with a folio
695+
* @folio: the folio that's being released
696696
* @gfp_mask: passed from Linux VFS, ignored by us
697697
*
698-
* Calls try_to_free_buffers() to free the buffers and put the page if the
698+
* Calls try_to_free_buffers() to free the buffers and put the folio if the
699699
* buffers can be released.
700700
*
701-
* Returns: 1 if the page was put or else 0
701+
* Returns: true if the folio was put or else false
702702
*/
703703

704-
int gfs2_releasepage(struct page *page, gfp_t gfp_mask)
704+
bool gfs2_release_folio(struct folio *folio, gfp_t gfp_mask)
705705
{
706-
struct address_space *mapping = page->mapping;
706+
struct address_space *mapping = folio->mapping;
707707
struct gfs2_sbd *sdp = gfs2_mapping2sbd(mapping);
708708
struct buffer_head *bh, *head;
709709
struct gfs2_bufdata *bd;
710710

711-
if (!page_has_buffers(page))
712-
return 0;
711+
head = folio_buffers(folio);
712+
if (!head)
713+
return false;
713714

714715
/*
715-
* From xfs_vm_releasepage: mm accommodates an old ext3 case where
716-
* clean pages might not have had the dirty bit cleared. Thus, it can
717-
* send actual dirty pages to ->releasepage() via shrink_active_list().
716+
* mm accommodates an old ext3 case where clean folios might
717+
* not have had the dirty bit cleared. Thus, it can send actual
718+
* dirty folios to ->release_folio() via shrink_active_list().
718719
*
719-
* As a workaround, we skip pages that contain dirty buffers below.
720-
* Once ->releasepage isn't called on dirty pages anymore, we can warn
721-
* on dirty buffers like we used to here again.
720+
* As a workaround, we skip folios that contain dirty buffers
721+
* below. Once ->release_folio isn't called on dirty folios
722+
* anymore, we can warn on dirty buffers like we used to here
723+
* again.
722724
*/
723725

724726
gfs2_log_lock(sdp);
725-
head = bh = page_buffers(page);
727+
bh = head;
726728
do {
727729
if (atomic_read(&bh->b_count))
728730
goto cannot_release;
@@ -732,9 +734,9 @@ int gfs2_releasepage(struct page *page, gfp_t gfp_mask)
732734
if (buffer_dirty(bh) || WARN_ON(buffer_pinned(bh)))
733735
goto cannot_release;
734736
bh = bh->b_this_page;
735-
} while(bh != head);
737+
} while (bh != head);
736738

737-
head = bh = page_buffers(page);
739+
bh = head;
738740
do {
739741
bd = bh->b_private;
740742
if (bd) {
@@ -755,11 +757,11 @@ int gfs2_releasepage(struct page *page, gfp_t gfp_mask)
755757
} while (bh != head);
756758
gfs2_log_unlock(sdp);
757759

758-
return try_to_free_buffers(page);
760+
return try_to_free_buffers(&folio->page);
759761

760762
cannot_release:
761763
gfs2_log_unlock(sdp);
762-
return 0;
764+
return false;
763765
}
764766

765767
static const struct address_space_operations gfs2_aops = {
@@ -785,7 +787,7 @@ static const struct address_space_operations gfs2_jdata_aops = {
785787
.dirty_folio = jdata_dirty_folio,
786788
.bmap = gfs2_bmap,
787789
.invalidate_folio = gfs2_invalidate_folio,
788-
.releasepage = gfs2_releasepage,
790+
.release_folio = gfs2_release_folio,
789791
.is_partially_uptodate = block_is_partially_uptodate,
790792
.error_remove_page = generic_error_remove_page,
791793
};

fs/gfs2/inode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include <linux/mm.h>
1313
#include "util.h"
1414

15-
extern int gfs2_releasepage(struct page *page, gfp_t gfp_mask);
15+
bool gfs2_release_folio(struct folio *folio, gfp_t gfp_mask);
1616
extern int gfs2_internal_read(struct gfs2_inode *ip,
1717
char *buf, loff_t *pos, unsigned size);
1818
extern void gfs2_set_aops(struct inode *inode);

fs/gfs2/meta_io.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,14 @@ const struct address_space_operations gfs2_meta_aops = {
9292
.dirty_folio = block_dirty_folio,
9393
.invalidate_folio = block_invalidate_folio,
9494
.writepage = gfs2_aspace_writepage,
95-
.releasepage = gfs2_releasepage,
95+
.release_folio = gfs2_release_folio,
9696
};
9797

9898
const struct address_space_operations gfs2_rgrp_aops = {
9999
.dirty_folio = block_dirty_folio,
100100
.invalidate_folio = block_invalidate_folio,
101101
.writepage = gfs2_aspace_writepage,
102-
.releasepage = gfs2_releasepage,
102+
.release_folio = gfs2_release_folio,
103103
};
104104

105105
/**

0 commit comments

Comments
 (0)