@@ -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
760762cannot_release :
761763 gfs2_log_unlock (sdp );
762- return 0 ;
764+ return false ;
763765}
764766
765767static 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};
0 commit comments