We want only pages from given range in ceph_writepages_start(). Use
pagevec_lookup_range_tag() instead of pagevec_lookup_tag() and remove
unnecessary code.

CC: Ilya Dryomov <idryo...@gmail.com>
CC: "Yan, Zheng" <z...@redhat.com>
CC: ceph-de...@vger.kernel.org
Signed-off-by: Jan Kara <j...@suse.cz>
---
 fs/ceph/addr.c | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)

diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index 1e71e6ca5ddf..0b7e56ae3b8c 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -841,21 +841,16 @@ static int ceph_writepages_start(struct address_space 
*mapping,
                struct page **pages = NULL, **data_pages;
                mempool_t *pool = NULL; /* Becomes non-null if mempool used */
                struct page *page;
-               int want;
                u64 offset = 0, len = 0;
 
                max_pages = max_pages_ever;
 
 get_more_pages:
                first = -1;
-               want = min(end - index,
-                          min((pgoff_t)PAGEVEC_SIZE,
-                              max_pages - (pgoff_t)locked_pages) - 1)
-                       + 1;
-               pvec_pages = pagevec_lookup_tag(&pvec, mapping, &index,
-                                               PAGECACHE_TAG_DIRTY,
-                                               want);
-               dout("pagevec_lookup_tag got %d\n", pvec_pages);
+               pvec_pages = pagevec_lookup_range_tag(&pvec, mapping, &index,
+                                               end, PAGECACHE_TAG_DIRTY,
+                                               PAGEVEC_SIZE);
+               dout("pagevec_lookup_range_tag got %d\n", pvec_pages);
                if (!pvec_pages && !locked_pages)
                        break;
                for (i = 0; i < pvec_pages && locked_pages < max_pages; i++) {
@@ -873,12 +868,6 @@ static int ceph_writepages_start(struct address_space 
*mapping,
                                unlock_page(page);
                                break;
                        }
-                       if (!wbc->range_cyclic && page->index > end) {
-                               dout("end of range %p\n", page);
-                               done = 1;
-                               unlock_page(page);
-                               break;
-                       }
                        if (strip_unit_end && (page->index > strip_unit_end)) {
                                dout("end of strip unit %p\n", page);
                                unlock_page(page);
-- 
2.12.3

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to