summaryrefslogtreecommitdiffstats
path: root/fs/ceph/addr.c
diff options
context:
space:
mode:
authorLi Wang2013-12-19 15:03:49 +0100
committerIlya Dryomov2013-12-31 19:32:03 +0100
commit183028052b48db2b34c09fd54f0bc465eaa305eb (patch)
treee23c879201e76c551063722d3e31a5ed65f25604 /fs/ceph/addr.c
parentceph fscache: Introduce a routine for uncaching single no data page from fscache (diff)
downloadkernel-qcow2-linux-183028052b48db2b34c09fd54f0bc465eaa305eb.tar.gz
kernel-qcow2-linux-183028052b48db2b34c09fd54f0bc465eaa305eb.tar.xz
kernel-qcow2-linux-183028052b48db2b34c09fd54f0bc465eaa305eb.zip
ceph fscache: Uncaching no data page from fscache in readpage()
Currently, if one new page allocated into fscache in readpage(), however, with no data read into due to error encountered during reading from OSDs, the slot in fscache is not uncached. This patch fixes this. Signed-off-by: Li Wang <liwang@ubuntukylin.com> Reviewed-by: Milosz Tanski <milosz@adfin.com>
Diffstat (limited to 'fs/ceph/addr.c')
-rw-r--r--fs/ceph/addr.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index ebda329611be..791a9a23fc60 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -209,6 +209,7 @@ static int readpage_nounlock(struct file *filp, struct page *page)
err = 0;
if (err < 0) {
SetPageError(page);
+ ceph_fscache_readpage_cancel(inode, page);
goto out;
} else {
if (err < PAGE_CACHE_SIZE) {