OSDN Git Service

ext4: fix prefetchw of NULL page
authorLiu Xiang <liu.xiang6@zte.com.cn>
Sun, 7 Apr 2019 15:54:27 +0000 (11:54 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 7 Apr 2019 15:54:27 +0000 (11:54 -0400)
In ext4_mpage_readpages(), if the parameter pages is not NULL, another
parameter page is NULL. At the first time prefetchw(&page->flags)
works on NULL. From second time, prefetchw(&page->flags) always works on
the last consumed page. This might do little improvment for handling
current page. So prefetchw() should be called while the page pointer
has just been updated.

Signed-off-by: Liu Xiang <liu.xiang6@zte.com.cn>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/readpage.c

index 3adadf4..9386b04 100644 (file)
@@ -127,9 +127,10 @@ int ext4_mpage_readpages(struct address_space *mapping,
                int fully_mapped = 1;
                unsigned first_hole = blocks_per_page;
 
-               prefetchw(&page->flags);
                if (pages) {
                        page = lru_to_page(pages);
+
+                       prefetchw(&page->flags);
                        list_del(&page->lru);
                        if (add_to_page_cache_lru(page, mapping, page->index,
                                  readahead_gfp_mask(mapping)))