diff options
author | Yan, Zheng <zyan@redhat.com> | 2016-04-15 07:56:12 +0200 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2016-05-26 01:15:32 +0200 |
commit | 6c93df5db628e710697c43bc1bd78a786549a548 (patch) | |
tree | 8f74edaae6bfb61178af444a9c68fc5cf791f8da /fs/ceph/debugfs.c | |
parent | ceph: renew caps for read/write if mds session got killed. (diff) | |
download | linux-6c93df5db628e710697c43bc1bd78a786549a548.tar.xz linux-6c93df5db628e710697c43bc1bd78a786549a548.zip |
ceph: don't call truncate_pagecache in ceph_writepages_start
truncate_pagecache() may decrease inode's reference. This can cause
deadlock if inode's last reference is dropped and iput_final() wants
to evict the inode. (evict() calls inode_wait_for_writeback(), which
waits for ceph_writepages_start() to return).
The fix is use work thead to truncate dirty pages. Also add 'forced
umount' check to ceph_update_writeable_page(), which prevents new
pages getting dirty.
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions