From: Yan, Zheng Date: Mon, 7 Sep 2015 07:46:24 +0000 (+0800) Subject: ceph: improve readahead for file holes X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=438386853d4c0c48fe73bf05a7d61c70ca5a3bfb;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git ceph: improve readahead for file holes When readahead encounters file holes, osd reply returns error -ENOENT, finish_read() skips adding pages to the the page cache. So readahead does not work for file holes. The fix is adding zero pages to the page cache when -ENOENT is returned. Signed-off-by: Yan, Zheng --- diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 98933350331c..6471e28e0586 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -276,7 +276,7 @@ static void finish_read(struct ceph_osd_request *req, struct ceph_msg *msg) for (i = 0; i < num_pages; i++) { struct page *page = osd_data->pages[i]; - if (rc < 0) + if (rc < 0 && rc != ENOENT) goto unlock; if (bytes < (int)PAGE_CACHE_SIZE) { /* zero (remainder of) page */