1
linux/fs/ceph
Yan, Zheng b415bf4f9f ceph: fix pending vmtruncate race
The locking order for pending vmtruncate is wrong, it can lead to
following race:

        write                  wmtruncate work
------------------------    ----------------------
lock i_mutex
check i_truncate_pending   check i_truncate_pending
truncate_inode_pages()     lock i_mutex (blocked)
copy data to page cache
unlock i_mutex
                           truncate_inode_pages()

The fix is take i_mutex before calling __ceph_do_pending_vmtruncate()

Fixes: http://tracker.ceph.com/issues/5453
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: Sage Weil <sage@inktank.com>
2013-07-03 15:32:56 -07:00
..
addr.c ceph: avoid meaningless calling ceph_caps_revoking if sync_mode == WB_SYNC_ALL. 2013-07-03 15:32:52 -07:00
caps.c ceph: fix pending vmtruncate race 2013-07-03 15:32:56 -07:00
ceph_frag.c
debugfs.c libceph: delay debugfs initialization until we learn global_id 2012-08-20 10:03:15 -07:00
dir.c ceph: use i_release_count to indicate dir's completeness 2013-05-01 21:17:07 -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: fix pending vmtruncate race 2013-07-03 15:32:56 -07:00
inode.c ceph: fix pending vmtruncate race 2013-07-03 15:32:56 -07:00
ioctl.c libceph: rename ceph_calc_object_layout() 2013-05-01 21:16:17 -07:00
ioctl.h
Kconfig fs/ceph: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:39:04 -08:00
locks.c ceph: fix up comment for ceph_count_locks() as to which lock to hold 2013-07-01 09:52:01 -07:00
Makefile
mds_client.c ceph: Free mdsc if alloc mdsc->mdsmap failed. 2013-07-03 15:32:53 -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: avoid accessing invalid memory 2013-07-03 15:32:55 -07:00
super.h ceph: fix pending vmtruncate race 2013-07-03 15:32:56 -07:00
xattr.c ceph: fix sleeping function called from invalid context. 2013-07-03 15:32:51 -07:00