diff mbox series

ceph: reinitialize mds feature bit even when session in open

Message ID 20231106043232.321783-1-vshankar@redhat.com (mailing list archive)
State New, archived
Headers show
Series ceph: reinitialize mds feature bit even when session in open | expand

Commit Message

Venky Shankar Nov. 6, 2023, 4:32 a.m. UTC
Following along the same lines as per the user-space fix. Right
now this isn't really an issue with the ceph kernel driver because
of the feature bit laginess, however, that can change over time
(when the new snaprealm info type is ported to the kernel driver)
and depending on the MDS version that's being upgraded can cause
message decoding issues - so, fix that early on.

URL: Fixes: http://tracker.ceph.com/issues/63188
Signed-off-by: Venky Shankar <vshankar@redhat.com>
---
 fs/ceph/mds_client.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Xiubo Li Nov. 6, 2023, 4:35 a.m. UTC | #1
On 11/6/23 12:32, Venky Shankar wrote:
> Following along the same lines as per the user-space fix. Right
> now this isn't really an issue with the ceph kernel driver because
> of the feature bit laginess, however, that can change over time
> (when the new snaprealm info type is ported to the kernel driver)
> and depending on the MDS version that's being upgraded can cause
> message decoding issues - so, fix that early on.
>
> URL: Fixes: http://tracker.ceph.com/issues/63188
> Signed-off-by: Venky Shankar <vshankar@redhat.com>
> ---
>   fs/ceph/mds_client.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
> index a7bffb030036..e1136009b44a 100644
> --- a/fs/ceph/mds_client.c
> +++ b/fs/ceph/mds_client.c
> @@ -4189,12 +4189,12 @@ static void handle_session(struct ceph_mds_session *session,
>   			pr_info_client(cl, "mds%d reconnect success\n",
>   				       session->s_mds);
>   
> +		session->s_features = features;
>   		if (session->s_state == CEPH_MDS_SESSION_OPEN) {
>   			pr_notice_client(cl, "mds%d is already opened\n",
>   					 session->s_mds);
>   		} else {
>   			session->s_state = CEPH_MDS_SESSION_OPEN;
> -			session->s_features = features;
>   			renewed_caps(mdsc, session, 0);
>   			if (test_bit(CEPHFS_FEATURE_METRIC_COLLECT,
>   				     &session->s_features))

LGTM.

Reviewed-by: Xiubo Li <xiubli@redhat.com>
diff mbox series

Patch

diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index a7bffb030036..e1136009b44a 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -4189,12 +4189,12 @@  static void handle_session(struct ceph_mds_session *session,
 			pr_info_client(cl, "mds%d reconnect success\n",
 				       session->s_mds);
 
+		session->s_features = features;
 		if (session->s_state == CEPH_MDS_SESSION_OPEN) {
 			pr_notice_client(cl, "mds%d is already opened\n",
 					 session->s_mds);
 		} else {
 			session->s_state = CEPH_MDS_SESSION_OPEN;
-			session->s_features = features;
 			renewed_caps(mdsc, session, 0);
 			if (test_bit(CEPHFS_FEATURE_METRIC_COLLECT,
 				     &session->s_features))