f2fs: use find_get_pages_tag() for looking up single page
__get_first_dirty_index() wants to lookup only the first dirty page after given index. There's no point in using pagevec_lookup_tag() for that. Just use find_get_pages_tag() directly. Link: http://lkml.kernel.org/r/20171009151359.31984-8-jack@suse.cz Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Chao Yu <yuchao0@huawei.com> Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com> Cc: Jaegeuk Kim <jaegeuk@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
028a63a6e3
Коммит
8faab64229
|
@ -313,18 +313,19 @@ int f2fs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
|
|||
static pgoff_t __get_first_dirty_index(struct address_space *mapping,
|
||||
pgoff_t pgofs, int whence)
|
||||
{
|
||||
struct pagevec pvec;
|
||||
struct page *page;
|
||||
int nr_pages;
|
||||
|
||||
if (whence != SEEK_DATA)
|
||||
return 0;
|
||||
|
||||
/* find first dirty page index */
|
||||
pagevec_init(&pvec, 0);
|
||||
nr_pages = pagevec_lookup_tag(&pvec, mapping, &pgofs,
|
||||
PAGECACHE_TAG_DIRTY, 1);
|
||||
pgofs = nr_pages ? pvec.pages[0]->index : ULONG_MAX;
|
||||
pagevec_release(&pvec);
|
||||
nr_pages = find_get_pages_tag(mapping, &pgofs, PAGECACHE_TAG_DIRTY,
|
||||
1, &page);
|
||||
if (!nr_pages)
|
||||
return ULONG_MAX;
|
||||
pgofs = page->index;
|
||||
put_page(page);
|
||||
return pgofs;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче