]> git.baikalelectronics.ru Git - kernel.git/commitdiff
ceph: call __fscache_uncache_page() if readpages fails
authorYan, Zheng <zyan@redhat.com>
Tue, 17 May 2016 03:58:02 +0000 (11:58 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 1 Jun 2016 08:30:12 +0000 (10:30 +0200)
If readpages fails, fscache needs to cleanup its internal state.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
fs/ceph/addr.c

index eeb71e5de27aca7ef1dca3f3a22e3abaa64e467b..4ff62fc98fb517f43a008ac379cee8a6d806f792 100644 (file)
@@ -276,8 +276,10 @@ static void finish_read(struct ceph_osd_request *req)
        for (i = 0; i < num_pages; i++) {
                struct page *page = osd_data->pages[i];
 
-               if (rc < 0 && rc != -ENOENT)
+               if (rc < 0 && rc != -ENOENT) {
+                       ceph_fscache_readpage_cancel(inode, page);
                        goto unlock;
+               }
                if (bytes < (int)PAGE_SIZE) {
                        /* zero (remainder of) page */
                        int s = bytes < 0 ? 0 : bytes;