Make use of new interfaces for loading and inserting preserved pages
into a shmem file in bulk.

Signed-off-by: Anthony Yznaga <anthony.yzn...@oracle.com>
---
 mm/shmem_pkram.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/mm/shmem_pkram.c b/mm/shmem_pkram.c
index 4992b6c3e54e..435488368104 100644
--- a/mm/shmem_pkram.c
+++ b/mm/shmem_pkram.c
@@ -315,18 +315,29 @@ static inline void pkram_load_report_one_done(void)
 static int do_load_file_content(struct pkram_stream *ps)
 {
        unsigned long index;
-       struct page *page;
-       int err = 0;
+       int i, err;
+
+       err = pkram_prepare_load_pages(ps);
+       if (err)
+               return err;
 
        do {
-               page = pkram_load_page(ps, &index, NULL);
-               if (!page)
+               err = pkram_load_pages(ps, &index);
+               if (err) {
+                       if (err == -ENODATA)
+                               err = 0;
                        break;
+               }
 
-               err = shmem_insert_page(ps->mm, ps->mapping->host, index, page);
-               put_page(page);
+               err = shmem_insert_pages(ps->mm, ps->mapping->host, index,
+                                        ps->pages, ps->nr_pages);
+
+               for (i = 0; i < ps->nr_pages; i++)
+                       put_page(ps->pages[i]);
        } while (!err);
 
+       pkram_finish_load_pages(ps);
+
        return err;
 }
 
-- 
2.13.3

Reply via email to