Commit f6357c3a authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle)
Browse files

truncate: Convert invalidate_inode_pages2_range to folios



If we're going to unmap a folio, we have to be sure to unmap the entire
folio, not just the part of it which lies after the search index.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarWilliam Kucharski <william.kucharski@oracle.com>
parent 338f379c
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -599,13 +599,13 @@ static int invalidate_complete_folio2(struct address_space *mapping,
	return 0;
}

static int do_launder_page(struct address_space *mapping, struct page *page)
static int do_launder_folio(struct address_space *mapping, struct folio *folio)
{
	if (!PageDirty(page))
	if (!folio_test_dirty(folio))
		return 0;
	if (page->mapping != mapping || mapping->a_ops->launder_page == NULL)
	if (folio->mapping != mapping || mapping->a_ops->launder_page == NULL)
		return 0;
	return mapping->a_ops->launder_page(page);
	return mapping->a_ops->launder_page(&folio->page);
}

/**
@@ -671,7 +671,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
				unmap_mapping_folio(folio);
			BUG_ON(folio_mapped(folio));

			ret2 = do_launder_page(mapping, &folio->page);
			ret2 = do_launder_folio(mapping, folio);
			if (ret2 == 0) {
				if (!invalidate_complete_folio2(mapping, folio))
					ret2 = -EBUSY;