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);
|
XA_STATE(xas, &mapping->i_pages, start_byte >> PAGE_SHIFT);
|
||||||
pgoff_t max = end_byte >> PAGE_SHIFT;
|
pgoff_t max = end_byte >> PAGE_SHIFT;
|
||||||
struct page *page;
|
struct folio *folio;
|
||||||
|
|
||||||
if (end_byte < start_byte)
|
if (end_byte < start_byte)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
xas_for_each(&xas, page, max) {
|
xas_for_each(&xas, folio, max) {
|
||||||
if (xas_retry(&xas, page))
|
if (xas_retry(&xas, folio))
|
||||||
continue;
|
continue;
|
||||||
if (xa_is_value(page))
|
if (xa_is_value(folio))
|
||||||
continue;
|
continue;
|
||||||
if (PageDirty(page) || PageLocked(page) || PageWriteback(page))
|
if (folio_test_dirty(folio) || folio_test_locked(folio) ||
|
||||||
|
folio_test_writeback(folio))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
return page != NULL;
|
return folio != NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(filemap_range_has_writeback);
|
EXPORT_SYMBOL_GPL(filemap_range_has_writeback);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user