]> git.ipfire.org Git - thirdparty/kernel/linux.git/blobdiff - fs/ext4/readpage.c
block: allow bio_for_each_segment_all() to iterate over multi-page bvec
[thirdparty/kernel/linux.git] / fs / ext4 / readpage.c
index f461d75ac049f04e2a180228530c507902269df0..e53639784892895044fef09a4d5c5b30f8461203 100644 (file)
@@ -72,6 +72,7 @@ static void mpage_end_io(struct bio *bio)
 {
        struct bio_vec *bv;
        int i;
+       struct bvec_iter_all iter_all;
 
        if (ext4_bio_encrypted(bio)) {
                if (bio->bi_status) {
@@ -81,7 +82,7 @@ static void mpage_end_io(struct bio *bio)
                        return;
                }
        }
-       bio_for_each_segment_all(bv, bio, i) {
+       bio_for_each_segment_all(bv, bio, i, iter_all) {
                struct page *page = bv->bv_page;
 
                if (!bio->bi_status) {
@@ -128,7 +129,7 @@ int ext4_mpage_readpages(struct address_space *mapping,
 
                prefetchw(&page->flags);
                if (pages) {
-                       page = list_entry(pages->prev, struct page, lru);
+                       page = lru_to_page(pages);
                        list_del(&page->lru);
                        if (add_to_page_cache_lru(page, mapping, page->index,
                                  readahead_gfp_mask(mapping)))