From 75ebabf63eac8f74adfef66a02dc051d552c4279 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 11 May 2009 13:54:03 -0700 Subject: [PATCH] mds: maintain capid across mds restart and client reconnect --- src/kernel/mds_client.c | 1 + src/mds/CInode.h | 1 + src/mds/Capability.h | 1 + 3 files changed, 3 insertions(+) diff --git a/src/kernel/mds_client.c b/src/kernel/mds_client.c index 083634badfcdb..514a9b990eda0 100644 --- a/src/kernel/mds_client.c +++ b/src/kernel/mds_client.c @@ -1832,6 +1832,7 @@ static int encode_caps_cb(struct inode *inode, struct ceph_cap *cap, BUG_ON(p > end); spin_lock(&inode->i_lock); cap->seq = 0; /* reset cap seq */ + rec->cap_id = cpu_to_le64(cap->cap_id); rec->pathbase = cpu_to_le64(pathbase); rec->wanted = cpu_to_le32(__ceph_caps_wanted(ci)); rec->issued = cpu_to_le32(cap->issued); diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 71e3d2f55f58d..f7347ea5ed900 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -639,6 +639,7 @@ public: cap->set_wanted(icr.wanted); cap->issue(icr.issued); } + cap->set_cap_id(icr.cap_id); cap->set_last_issue_stamp(g_clock.recent_now()); inode.size = MAX(inode.size, icr.size); inode.mtime = MAX(inode.mtime, utime_t(icr.mtime)); diff --git a/src/mds/Capability.h b/src/mds/Capability.h index d0bfe9ae2c748..780ce4f99b143 100644 --- a/src/mds/Capability.h +++ b/src/mds/Capability.h @@ -198,6 +198,7 @@ public: void set_last_issue() { last_issue = last_sent; } void set_last_issue_stamp(utime_t t) { last_issue_stamp = t; } + void set_cap_id(__u64 i) { cap_id = i; } __u64 get_cap_id() { return cap_id; } //ceph_seq_t get_last_issue() { return last_issue; } -- 2.39.5