From: Milosz Tanski Date: Tue, 3 Sep 2013 23:11:01 +0000 (-0400) Subject: ceph: ceph_readpage_to_fscache didn't check if marked X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=9b8dd1e8a55a12b67240b6b28160ac8c1dec0172;p=linux-beck.git ceph: ceph_readpage_to_fscache didn't check if marked Previously ceph_readpage_to_fscache did not call if page was marked as cached before calling fscache_write_page resulting in a BUG inside of fscache. FS-Cache: Assertion failed ------------[ cut here ]------------ kernel BUG at fs/fscache/page.c:874! invalid opcode: 0000 [#1] SMP Call Trace: [] __ceph_readpage_to_fscache+0x66/0x80 [ceph] [] readpage_nounlock+0x124/0x210 [ceph] [] ceph_readpage+0x1d/0x40 [ceph] [] generic_file_aio_read+0x1f6/0x700 [] ceph_aio_read+0x5fc/0xab0 [ceph] Signed-off-by: Milosz Tanski Signed-off-by: Sage Weil --- diff --git a/fs/ceph/cache.c b/fs/ceph/cache.c index 5c413ecf1f15..c737ae9893ef 100644 --- a/fs/ceph/cache.c +++ b/fs/ceph/cache.c @@ -311,6 +311,9 @@ void ceph_readpage_to_fscache(struct inode *inode, struct page *page) struct ceph_inode_info *ci = ceph_inode(inode); int ret; + if (!PageFsCache(page)) + return; + if (!cache_valid(ci)) return;