summaryrefslogtreecommitdiff
path: root/fs/ceph/super.h
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-09-16 16:26:51 -0700
committerSage Weil <sage@newdream.net>2010-09-16 16:26:51 -0700
commitae00d4f37f4df56821331deb1028748110dd6dc9 (patch)
tree52437bde7370fc7a21193c27a08dc1d7238cee98 /fs/ceph/super.h
parentcfc0bf6640dfd0f43bf8bfec5a475284809baa4d (diff)
downloadlwn-ae00d4f37f4df56821331deb1028748110dd6dc9.tar.gz
lwn-ae00d4f37f4df56821331deb1028748110dd6dc9.zip
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/super.h')
-rw-r--r--fs/ceph/super.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index c33897ae5725..c80bfbe27b05 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -690,6 +690,8 @@ struct ceph_snap_realm {
struct list_head empty_item; /* if i have ref==0 */
+ struct list_head dirty_item; /* if realm needs new context */
+
/* the current set of snaps for this realm */
struct ceph_snap_context *cached_context;