filemap: convert filemap_range_has_writeback() to use folios
Removes 3 calls to compound_head(). Link: https://lkml.kernel.org/r/20220905214557.868606-1-vishal.moola@gmail.com Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com> Cc: Matthew Wilcox <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
710bb68c2e
commit
b05f41a1aa
13
mm/filemap.c
13
mm/filemap.c
|
@ -632,22 +632,23 @@ bool filemap_range_has_writeback(struct address_space *mapping,
|
|||
{
|
||||
XA_STATE(xas, &mapping->i_pages, start_byte >> PAGE_SHIFT);
|
||||
pgoff_t max = end_byte >> PAGE_SHIFT;
|
||||
struct page *page;
|
||||
struct folio *folio;
|
||||
|
||||
if (end_byte < start_byte)
|
||||
return false;
|
||||
|
||||
rcu_read_lock();
|
||||
xas_for_each(&xas, page, max) {
|
||||
if (xas_retry(&xas, page))
|
||||
xas_for_each(&xas, folio, max) {
|
||||
if (xas_retry(&xas, folio))
|
||||
continue;
|
||||
if (xa_is_value(page))
|
||||
if (xa_is_value(folio))
|
||||
continue;
|
||||
if (PageDirty(page) || PageLocked(page) || PageWriteback(page))
|
||||
if (folio_test_dirty(folio) || folio_test_locked(folio) ||
|
||||
folio_test_writeback(folio))
|
||||
break;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return page != NULL;
|
||||
return folio != NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(filemap_range_has_writeback);
|
||||
|
||||
|
|
Loading…
Reference in New Issue