diff options
author | Sage Weil <sage@newdream.net> | 2010-03-17 16:30:21 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-05-17 15:25:34 -0700 |
commit | aab53dd9e81ccefa7b8d88eec5138dd73639a783 (patch) | |
tree | b61a95b826507b403a84177436ff83a999e10c4c /fs | |
parent | e01a594646ebbf964b6058e3bf28125379063439 (diff) | |
download | linux-aab53dd9e81ccefa7b8d88eec5138dd73639a783.tar.gz linux-aab53dd9e81ccefa7b8d88eec5138dd73639a783.tar.bz2 linux-aab53dd9e81ccefa7b8d88eec5138dd73639a783.zip |
ceph: only send cap releases when mds is OPEN|HUNG
On OPENING we shouldn't have any caps (or releases).
On CLOSING, we should wait until we succeed (and throw it all out), or
don't (and are OPEN again).
On RECONNECTING we can wait until we are OPEN.
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ceph/mds_client.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index a4d9e5b0fd3d..d45787470fb5 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -2647,7 +2647,9 @@ static void delayed_work(struct work_struct *work) else ceph_con_keepalive(&s->s_con); add_cap_releases(mdsc, s, -1); - send_cap_releases(mdsc, s); + if (s->s_state == CEPH_MDS_SESSION_OPEN || + s->s_state == CEPH_MDS_SESSION_HUNG) + send_cap_releases(mdsc, s); mutex_unlock(&s->s_mutex); ceph_put_mds_session(s); |