linux/fs/ceph
Yan, Zheng 1ac0fc8adf ceph: fix race between writepages and truncate
ceph_writepages_start() reads inode->i_size in two places. It can get
different values between successive read, because truncate can change
inode->i_size at any time. The race can lead to mismatch between data
length of osd request and pages marked as writeback. When osd request
finishes, it clear writeback page according to its data length. So
some pages can be left in writeback state forever. The fix is only
read inode->i_size once, save its value to a local variable and use
the local variable when i_size is needed.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: Alex Elder <elder@inktank.com>
2013-05-01 21:18:55 -07:00
..
Kconfig fs/ceph: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:39:04 -08:00
Makefile ceph: Makefile: Remove unnessary code 2011-01-12 15:15:13 -08:00
addr.c ceph: fix race between writepages and truncate 2013-05-01 21:18:55 -07:00
caps.c ceph: take i_mutex before getting Fw cap 2013-05-01 21:18:53 -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 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: apply write checks in ceph_aio_write 2013-05-01 21:18:54 -07:00
inode.c ceph: fix symlink inode operations 2013-05-01 21:18:50 -07:00
ioctl.c libceph: rename ceph_calc_object_layout() 2013-05-01 21:16:17 -07:00
ioctl.h ceph: fully initialize new layout 2012-05-16 14:28:27 -05:00
locks.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
mds_client.c libceph: add, don't set data for a message 2013-05-01 21:18:34 -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: Use pseudo-random numbers to choose mds 2013-05-01 21:18:49 -07:00
snap.c ceph: define snap counts as u32 everywhere 2012-07-30 18:15:47 -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: set up page array mempool with correct size 2013-05-01 21:17:50 -07:00
super.h ceph: use i_release_count to indicate dir's completeness 2013-05-01 21:17:07 -07:00
xattr.c ceph: eliminate sparse warnings in fs code 2013-02-25 15:37:14 -06:00