diff options
author | Yan, Zheng <zyan@redhat.com> | 2015-01-04 22:04:04 -0500 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2015-02-19 05:31:37 -0500 |
commit | 03f4fcb02884859b584c709652bb48f8125ceb45 (patch) | |
tree | a65b5f4bb6661d17b9a9bdacf7b1c27ddff33137 /fs/ceph/mds_client.c | |
parent | f646912d1044ace6c6c5b5785b2579177781873b (diff) |
ceph: handle SESSION_FORCE_RO message
mark session as readonly and wake up all cap waiters.
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Diffstat (limited to 'fs/ceph/mds_client.c')
-rw-r--r-- | fs/ceph/mds_client.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index d2171f4a6980..c6c33b411a2f 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c | |||
@@ -2580,6 +2580,14 @@ static void handle_session(struct ceph_mds_session *session, | |||
2580 | send_flushmsg_ack(mdsc, session, seq); | 2580 | send_flushmsg_ack(mdsc, session, seq); |
2581 | break; | 2581 | break; |
2582 | 2582 | ||
2583 | case CEPH_SESSION_FORCE_RO: | ||
2584 | dout("force_session_readonly %p\n", session); | ||
2585 | spin_lock(&session->s_cap_lock); | ||
2586 | session->s_readonly = true; | ||
2587 | spin_unlock(&session->s_cap_lock); | ||
2588 | wake_up_session_caps(session, 0); | ||
2589 | break; | ||
2590 | |||
2583 | default: | 2591 | default: |
2584 | pr_err("mdsc_handle_session bad op %d mds%d\n", op, mds); | 2592 | pr_err("mdsc_handle_session bad op %d mds%d\n", op, mds); |
2585 | WARN_ON(1); | 2593 | WARN_ON(1); |
@@ -2791,6 +2799,8 @@ static void send_mds_reconnect(struct ceph_mds_client *mdsc, | |||
2791 | spin_unlock(&session->s_gen_ttl_lock); | 2799 | spin_unlock(&session->s_gen_ttl_lock); |
2792 | 2800 | ||
2793 | spin_lock(&session->s_cap_lock); | 2801 | spin_lock(&session->s_cap_lock); |
2802 | /* don't know if session is readonly */ | ||
2803 | session->s_readonly = 0; | ||
2794 | /* | 2804 | /* |
2795 | * notify __ceph_remove_cap() that we are composing cap reconnect. | 2805 | * notify __ceph_remove_cap() that we are composing cap reconnect. |
2796 | * If a cap get released before being added to the cap reconnect, | 2806 | * If a cap get released before being added to the cap reconnect, |