linux/fs/ceph
Milosz Tanski ffc79664d1 ceph: hung on ceph fscache invalidate in some cases
In some cases I'm on my ceph client cluster I'm seeing hunk kernel tasks in
the invalidate page code path. This is due to the fact that we don't check if
the page is marked as cache before calling fscache_wait_on_page_write().

This is the log from the hang

INFO: task XXXXXX:12034 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
 ...
Call Trace:
[<ffffffff81568d09>] schedule+0x29/0x70
[<ffffffffa01d4cbd>] __fscache_wait_on_page_write+0x6d/0xb0 [fscache]
[<ffffffff81083520>] ? add_wait_queue+0x60/0x60
[<ffffffffa029a3e9>] ceph_invalidate_fscache_page+0x29/0x50 [ceph]
[<ffffffffa027df00>] ceph_invalidatepage+0x70/0x190 [ceph]
[<ffffffff8112656f>] ? delete_from_page_cache+0x5f/0x70
[<ffffffff81133cab>] truncate_inode_page+0x8b/0x90
[<ffffffff81133ded>] truncate_inode_pages_range.part.12+0x13d/0x620
[<ffffffff8113431d>] truncate_inode_pages_range+0x4d/0x60
[<ffffffff811343b5>] truncate_inode_pages+0x15/0x20
[<ffffffff8119bbf6>] evict+0x1a6/0x1b0
[<ffffffff8119c3f3>] iput+0x103/0x190
 ...

Signed-off-by: Milosz Tanski <milosz@adfin.com>
Reviewed-by: Sage Weil <sage@inktank.com>
2013-09-25 18:20:14 -07:00
..
addr.c ceph: page still marked private_2 2013-09-06 16:50:12 +00:00
cache.c ceph: hung on ceph fscache invalidate in some cases 2013-09-25 18:20:14 -07:00
cache.h ceph: trivial buildbot warnings fix 2013-09-06 16:50:12 +00:00
caps.c ceph: use d_invalidate() to invalidate aliases 2013-09-06 12:55:29 -07:00
ceph_frag.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
debugfs.c libceph: delay debugfs initialization until we learn global_id 2012-08-20 10:03:15 -07:00
dir.c Merge remote-tracking branch 'linus/master' into testing 2013-08-15 11:11:45 -07:00
export.c fs: encode_fh: return FILEID_INVALID if invalid fid_type 2013-02-26 02:46:10 -05:00
file.c ceph: use fscache as a local presisent cache 2013-09-06 16:50:11 +00:00
inode.c ceph: remove ceph_lookup_inode() 2013-09-06 12:55:09 -07:00
ioctl.c ceph: Add check returned value on func ceph_calc_ceph_pg. 2013-08-09 17:55:21 -07:00
ioctl.h ceph: fully initialize new layout 2012-05-16 14:28:27 -05:00
Kconfig ceph: use fscache as a local presisent cache 2013-09-06 16:50:11 +00:00
locks.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2013-07-09 12:39:10 -07:00
Makefile ceph: use fscache as a local presisent cache 2013-09-06 16:50:11 +00:00
mds_client.c ceph: remove ceph_lookup_inode() 2013-09-06 12:55:09 -07:00
mds_client.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2013-02-28 17:43:09 -08:00
mdsmap.c ceph: tidy ceph_mdsmap_decode() a little 2013-07-01 09:52:02 -07:00
snap.c ceph: use ceph_create_snap_context() 2013-05-01 21:20:09 -07:00
strings.c libceph: update ceph_mds_state_name() and ceph_mds_op_name() 2013-02-18 12:20:34 -06:00
super.c ceph: use fscache as a local presisent cache 2013-09-06 16:50:11 +00:00
super.h ceph: remove ceph_lookup_inode() 2013-09-06 12:55:09 -07:00
xattr.c ceph: fix sleeping function called from invalid context. 2013-07-03 15:32:51 -07:00