diff options
author | Sage Weil <sage@newdream.net> | 2010-09-16 16:26:51 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-09-16 16:26:51 -0700 |
commit | ae00d4f37f4df56821331deb1028748110dd6dc9 (patch) | |
tree | 52437bde7370fc7a21193c27a08dc1d7238cee98 /fs/ceph/addr.c | |
parent | cfc0bf6640dfd0f43bf8bfec5a475284809baa4d (diff) | |
download | op-kernel-dev-ae00d4f37f4df56821331deb1028748110dd6dc9.zip op-kernel-dev-ae00d4f37f4df56821331deb1028748110dd6dc9.tar.gz |
ceph: fix cap_snap and realm split
The cap_snap creation/queueing relies on both the current i_head_snapc
_and_ the i_snap_realm pointers being correct, so that the new cap_snap
can properly reference the old context and the new i_head_snapc can be
updated to reference the new snaprealm's context. To fix this, we:
- move inodes completely to the new (split) realm so that i_snap_realm
is correct, and
- generate the new snapc's _before_ queueing the cap_snaps in
ceph_update_snap_trace().
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/addr.c')
-rw-r--r-- | fs/ceph/addr.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 50461b8..efbc604 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -411,8 +411,8 @@ static int writepage_nounlock(struct page *page, struct writeback_control *wbc) if (i_size < page_off + len) len = i_size - page_off; - dout("writepage %p page %p index %lu on %llu~%u\n", - inode, page, page->index, page_off, len); + dout("writepage %p page %p index %lu on %llu~%u snapc %p\n", + inode, page, page->index, page_off, len, snapc); writeback_stat = atomic_long_inc_return(&client->writeback_count); if (writeback_stat > |