[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <cover.1388066937.git.liwang@ubuntukylin.com>
Date: Thu, 26 Dec 2013 06:29:25 -0800
From: Li Wang <liwang@...ntukylin.com>
To: ceph-devel@...r.kernel.org
Cc: Sage Weil <sage@...tank.com>, Milosz Tanski <milosz@...in.com>,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
Yunchuan Wen <yunchuanwen@...ntukylin.com>
Subject: [PATCH 0/3] Ceph fscache: Fix kernel panic due to a race
From: Yunchuan Wen <yunchuanwen@...ntukylin.com>
The following scripts could easily panic the kernel,
#!/bin/bash
mount -t ceph -o fsc MONADDR:/ cephfs
rm -rf cephfs/foo
dd if=/dev/zero of=cephfs/foo bs=8 count=512
echo 3 > /proc/sys/vm/drop_caches
dd if=cephfs/foo of=/dev/null bs=8 count=1024
This is due to when writing a page into fscache, the code will
assert that the write position does not exceed the
object->store_limit_l, which is supposed to be equal to inode->i_size.
However, for current implementation, after file writing, the
object->store_limit_l is not synchronized with new
inode->i_size immediately, which introduces a race that if writing
a new page into fscache, will reach the ASSERT that write position
has exceeded the object->store_limit_l, and cause kernel panic.
This patch fixes it.
Yunchuan Wen (3):
Ceph fscache: Add an interface to synchronize object store limit
Ceph fscache: Update object store limit after writing
Ceph fscache: Wait for completion of object initialization
fs/ceph/cache.c | 1 +
fs/ceph/cache.h | 10 ++++++++++
fs/ceph/file.c | 3 +++
3 files changed, 14 insertions(+)
--
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists