Whamcloud - gitweb
LU-16524 nodemap: filter out unknown records 30/50230/2
authorSebastien Buisson <sbuisson@ddn.com>
Wed, 8 Mar 2023 10:26:38 +0000 (11:26 +0100)
committerOleg Drokin <green@whamcloud.com>
Tue, 11 Apr 2023 00:07:42 +0000 (00:07 +0000)
Ignore records of type NODEMAP_CLUSTER_IDX or NODEMAP_GLOBAL_IDX if
their subtype is not known. It would come from an upgraded server on
which new nodemap properties/entries would be set, and then downgraded
back to an older version.

Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I7e349fde7fc927b23500abb51d4aed91f938f8d1
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50230
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/ptlrpc/nodemap_storage.c

index de60d0f..387c202 100644 (file)
@@ -738,6 +738,14 @@ static int nodemap_process_keyrec(struct nodemap_config *config,
        case NODEMAP_CLUSTER_IDX: {
                struct lu_nodemap *old_nm = NULL;
 
+               if (key->nk_unused != 0) {
+                       CWARN("%s: ignoring keyrec of type %d with subtype %u\n",
+                             recent_nodemap ?
+                              (*recent_nodemap)->nm_name : "nodemap",
+                             NODEMAP_CLUSTER_IDX, key->nk_unused);
+                       break;
+               }
+
                nodemap = cfs_hash_lookup(config->nmc_nodemap_hash,
                                          rec->ncr.ncr_name);
                if (nodemap == NULL) {
@@ -838,6 +846,14 @@ static int nodemap_process_keyrec(struct nodemap_config *config,
                        GOTO(out, rc);
                break;
        case NODEMAP_GLOBAL_IDX:
+               if (key->nk_unused != 0) {
+                       CWARN("%s: ignoring keyrec of type %d with subtype %u\n",
+                             recent_nodemap ?
+                             (*recent_nodemap)->nm_name : "nodemap",
+                             NODEMAP_GLOBAL_IDX, key->nk_unused);
+                       break;
+               }
+
                config->nmc_nodemap_is_active = rec->ngr.ngr_is_active;
                break;
        default: