summaryrefslogtreecommitdiff
path: root/mm/truncate.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/truncate.c')
-rw-r--r--mm/truncate.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/mm/truncate.c b/mm/truncate.c
index aa0ed373789d..b9ad298e6ce7 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -154,9 +154,15 @@ static int invalidate_exceptional_entry2(struct address_space *mapping,
*/
void folio_invalidate(struct folio *folio, size_t offset, size_t length)
{
+ const struct address_space_operations *aops = folio->mapping->a_ops;
void (*invalidatepage)(struct page *, unsigned int, unsigned int);
- invalidatepage = folio->mapping->a_ops->invalidatepage;
+ if (aops->invalidate_folio) {
+ aops->invalidate_folio(folio, offset, length);
+ return;
+ }
+
+ invalidatepage = aops->invalidatepage;
#ifdef CONFIG_BLOCK
if (!invalidatepage)
invalidatepage = block_invalidatepage;