* Lookup the (hopefully) full range of pages we need.
         */
        spd.nr_pages = find_get_pages_contig(mapping, index, nr_pages, pages);
+       index += spd.nr_pages;
 
        /*
         * If find_get_pages_contig() returned fewer pages than we needed,
-        * allocate the rest and fill in the holes.
+        * readahead/allocate the rest and fill in the holes.
         */
+       if (spd.nr_pages < nr_pages)
+               page_cache_readahead_ondemand(mapping, &in->f_ra, in,
+                               NULL, index, nr_pages - spd.nr_pages);
+
        error = 0;
-       index += spd.nr_pages;
        while (spd.nr_pages < nr_pages) {
                /*
                 * Page could be there, find_get_pages_contig() breaks on
                 */
                page = find_get_page(mapping, index);
                if (!page) {
-                       page_cache_readahead_ondemand(mapping, &in->f_ra, in,
-                                       NULL, index, nr_pages - spd.nr_pages);
-
                        /*
                         * page didn't exist, allocate one.
                         */