diff options
-rw-r--r-- | fs/ceph/mds_client.c | 19 | ||||
-rw-r--r-- | fs/ceph/strings.c | 2 | ||||
-rw-r--r-- | include/linux/ceph/ceph_fs.h | 2 |
3 files changed, 23 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 1fd655ac806a..7c00dd530bd1 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c | |||
@@ -1137,6 +1137,21 @@ static int send_renew_caps(struct ceph_mds_client *mdsc, | |||
1137 | return 0; | 1137 | return 0; |
1138 | } | 1138 | } |
1139 | 1139 | ||
1140 | static int send_flushmsg_ack(struct ceph_mds_client *mdsc, | ||
1141 | struct ceph_mds_session *session, u64 seq) | ||
1142 | { | ||
1143 | struct ceph_msg *msg; | ||
1144 | |||
1145 | dout("send_flushmsg_ack to mds%d (%s)s seq %lld\n", | ||
1146 | session->s_mds, session_state_name(session->s_state), seq); | ||
1147 | msg = create_session_msg(CEPH_SESSION_FLUSHMSG_ACK, seq); | ||
1148 | if (!msg) | ||
1149 | return -ENOMEM; | ||
1150 | ceph_con_send(&session->s_con, msg); | ||
1151 | return 0; | ||
1152 | } | ||
1153 | |||
1154 | |||
1140 | /* | 1155 | /* |
1141 | * Note new cap ttl, and any transition from stale -> not stale (fresh?). | 1156 | * Note new cap ttl, and any transition from stale -> not stale (fresh?). |
1142 | * | 1157 | * |
@@ -2396,6 +2411,10 @@ static void handle_session(struct ceph_mds_session *session, | |||
2396 | trim_caps(mdsc, session, le32_to_cpu(h->max_caps)); | 2411 | trim_caps(mdsc, session, le32_to_cpu(h->max_caps)); |
2397 | break; | 2412 | break; |
2398 | 2413 | ||
2414 | case CEPH_SESSION_FLUSHMSG: | ||
2415 | send_flushmsg_ack(mdsc, session, seq); | ||
2416 | break; | ||
2417 | |||
2399 | default: | 2418 | default: |
2400 | pr_err("mdsc_handle_session bad op %d mds%d\n", op, mds); | 2419 | pr_err("mdsc_handle_session bad op %d mds%d\n", op, mds); |
2401 | WARN_ON(1); | 2420 | WARN_ON(1); |
diff --git a/fs/ceph/strings.c b/fs/ceph/strings.c index 89fa4a940a0f..4440f447fd3f 100644 --- a/fs/ceph/strings.c +++ b/fs/ceph/strings.c | |||
@@ -41,6 +41,8 @@ const char *ceph_session_op_name(int op) | |||
41 | case CEPH_SESSION_RENEWCAPS: return "renewcaps"; | 41 | case CEPH_SESSION_RENEWCAPS: return "renewcaps"; |
42 | case CEPH_SESSION_STALE: return "stale"; | 42 | case CEPH_SESSION_STALE: return "stale"; |
43 | case CEPH_SESSION_RECALL_STATE: return "recall_state"; | 43 | case CEPH_SESSION_RECALL_STATE: return "recall_state"; |
44 | case CEPH_SESSION_FLUSHMSG: return "flushmsg"; | ||
45 | case CEPH_SESSION_FLUSHMSG_ACK: return "flushmsg_ack"; | ||
44 | } | 46 | } |
45 | return "???"; | 47 | return "???"; |
46 | } | 48 | } |
diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index 2ad7b860f062..26bb587deb78 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h | |||
@@ -282,6 +282,8 @@ enum { | |||
282 | CEPH_SESSION_RENEWCAPS, | 282 | CEPH_SESSION_RENEWCAPS, |
283 | CEPH_SESSION_STALE, | 283 | CEPH_SESSION_STALE, |
284 | CEPH_SESSION_RECALL_STATE, | 284 | CEPH_SESSION_RECALL_STATE, |
285 | CEPH_SESSION_FLUSHMSG, | ||
286 | CEPH_SESSION_FLUSHMSG_ACK, | ||
285 | }; | 287 | }; |
286 | 288 | ||
287 | extern const char *ceph_session_op_name(int op); | 289 | extern const char *ceph_session_op_name(int op); |