truncate: Skip known-truncated indices
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 26 Nov 2021 18:25:38 +0000 (13:25 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Sat, 8 Jan 2022 05:28:41 +0000 (00:28 -0500)
If we've truncated an entire folio, we can skip over all the indices
covered by this folio.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: William Kucharski <william.kucharski@oracle.com>
mm/truncate.c

index 0000424fc56b6ef65c73edc5866dc8434360c335..0df420c1cf5b73b398df16ac6855fd047405270c 100644 (file)
@@ -408,6 +408,7 @@ void truncate_inode_pages_range(struct address_space *mapping,
                        folio_wait_writeback(folio);
                        truncate_inode_folio(mapping, folio);
                        folio_unlock(folio);
+                       index = folio_index(folio) + folio_nr_pages(folio) - 1;
                }
                truncate_exceptional_pvec_entries(mapping, &pvec, indices);
                pagevec_release(&pvec);