Thread (67 messages) 67 messages, 4 authors, 2017-02-13

Re: [PATCHv6 13/37] mm: make write_cache_pages() work on huge pages

From: Matthew Wilcox <willy@infradead.org>
Date: 2017-02-10 17:46:10
Also in: linux-ext4, linux-fsdevel, linux-mm, lkml

On Thu, Jan 26, 2017 at 02:57:55PM +0300, Kirill A. Shutemov wrote:
We writeback whole huge page a time. Let's adjust iteration this way.

Signed-off-by: Kirill A. Shutemov <redacted>
I think a lot of the complexity in this patch is from pagevec_lookup_tag
giving you subpages rather than head pages...
quoted hunk ↗ jump to hunk
@@ -2268,7 +2273,8 @@ int write_cache_pages(struct address_space *mapping,
 					 * not be suitable for data integrity
 					 * writeout).
 					 */
-					done_index = page->index + 1;
+					done_index = compound_head(page)->index
+						+ hpage_nr_pages(page);
 					done = 1;
 					break;
 				}
you'd still need this line, but it'd only be:

					done_index = page->index +
						(1 << compound_order(page));

I think we want:

#define	nr_pages(page)	(1 << compound_order(page))

because we seem to be repeating that idiom quite a lot in these patches.

					done_index = page->index +
								nr_pages(page);

Still doesn't quite fit on one line, but it's closer, and it's the
ridiculous indentation in that function that's the real problem.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help