staging: lustre: llog: keep llog ctxt indices constant
authorMikhail Pershin <mike.pershin@intel.com>
Tue, 16 Aug 2016 20:19:18 +0000 (16:19 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 21 Aug 2016 13:57:38 +0000 (15:57 +0200)
The llog context id table cannot be shrunk easily because that
will cause index shifting and incompatibility between old client
and new server and vice versa.

Patch moves llog_ctxt_id table to the lustre_idl.h because this is
wire protocol data, these values are added to the wirecheck.

Signed-off-by: Mikhail Pershin <mike.pershin@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5218
Reviewed-on: http://review.whamcloud.com/10758
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/include/lustre/lustre_idl.h
drivers/staging/lustre/lustre/include/obd.h
drivers/staging/lustre/lustre/ptlrpc/wiretest.c

index 4a7ccc8e33c3680bce2b78d3e2d84aca63b170b0..05fe3593b6fa221fe83ec57873edefd69e2249ec 100644 (file)
@@ -2936,7 +2936,29 @@ enum obd_cmd {
 };
 #define OBD_FIRST_OPC OBD_PING
 
-/* catalog of log objects */
+/**
+ * llog contexts indices.
+ *
+ * There is compatibility problem with indexes below, they are not
+ * continuous and must keep their numbers for compatibility needs.
+ * See LU-5218 for details.
+ */
+enum llog_ctxt_id {
+       LLOG_CONFIG_ORIG_CTXT  =  0,
+       LLOG_CONFIG_REPL_CTXT = 1,
+       LLOG_MDS_OST_ORIG_CTXT = 2,
+       LLOG_MDS_OST_REPL_CTXT = 3, /* kept just to avoid re-assignment */
+       LLOG_SIZE_ORIG_CTXT = 4,
+       LLOG_SIZE_REPL_CTXT = 5,
+       LLOG_TEST_ORIG_CTXT = 8,
+       LLOG_TEST_REPL_CTXT = 9, /* kept just to avoid re-assignment */
+       LLOG_CHANGELOG_ORIG_CTXT = 12, /**< changelog generation on mdd */
+       LLOG_CHANGELOG_REPL_CTXT = 13, /**< changelog access on clients */
+       /* for multiple changelog consumers */
+       LLOG_CHANGELOG_USER_ORIG_CTXT = 14,
+       LLOG_AGENT_ORIG_CTXT = 15, /**< agent requests generation on cdt */
+       LLOG_MAX_CTXTS
+};
 
 /** Identifier for a single log object */
 struct llog_logid {
index b7bdd079755196cbc3a872357d1285efe6ddb9e7..e7e03be9fcc515c13015d530ccceee4025739c43 100644 (file)
@@ -172,27 +172,6 @@ struct brw_page {
        u32 flag;
 };
 
-/* llog contexts */
-enum llog_ctxt_id {
-       LLOG_CONFIG_ORIG_CTXT  =  0,
-       LLOG_CONFIG_REPL_CTXT,
-       LLOG_MDS_OST_ORIG_CTXT,
-       LLOG_MDS_OST_REPL_CTXT,
-       LLOG_SIZE_ORIG_CTXT,
-       LLOG_SIZE_REPL_CTXT,
-       LLOG_RD1_ORIG_CTXT,
-       LLOG_RD1_REPL_CTXT,
-       LLOG_TEST_ORIG_CTXT,
-       LLOG_TEST_REPL_CTXT,
-       LLOG_LOVEA_ORIG_CTXT,
-       LLOG_LOVEA_REPL_CTXT,
-       LLOG_CHANGELOG_ORIG_CTXT,       /**< changelog generation on mdd */
-       LLOG_CHANGELOG_REPL_CTXT,       /**< changelog access on clients */
-       LLOG_CHANGELOG_USER_ORIG_CTXT,  /**< for multiple changelog consumers */
-       LLOG_AGENT_ORIG_CTXT,           /**< agent requests generation on cdt */
-       LLOG_MAX_CTXTS
-};
-
 struct timeout_item {
        enum timeout_event ti_event;
        unsigned long    ti_timeout;
index 2c718e0d0ea054bd37ef7201f1ac3ca391b94a24..31d332605ac427bdcbcee114ac7dcc6bfbe99970 100644 (file)
@@ -3483,6 +3483,19 @@ void lustre_assert_wire_constants(void)
        CLASSERT(LLOG_ORIGIN_HANDLE_DESTROY == 509);
        CLASSERT(LLOG_FIRST_OPC == 501);
        CLASSERT(LLOG_LAST_OPC == 510);
+       CLASSERT(LLOG_CONFIG_ORIG_CTXT == 0);
+       CLASSERT(LLOG_CONFIG_REPL_CTXT == 1);
+       CLASSERT(LLOG_MDS_OST_ORIG_CTXT == 2);
+       CLASSERT(LLOG_MDS_OST_REPL_CTXT == 3);
+       CLASSERT(LLOG_SIZE_ORIG_CTXT == 4);
+       CLASSERT(LLOG_SIZE_REPL_CTXT == 5);
+       CLASSERT(LLOG_TEST_ORIG_CTXT == 8);
+       CLASSERT(LLOG_TEST_REPL_CTXT == 9);
+       CLASSERT(LLOG_CHANGELOG_ORIG_CTXT == 12);
+       CLASSERT(LLOG_CHANGELOG_REPL_CTXT == 13);
+       CLASSERT(LLOG_CHANGELOG_USER_ORIG_CTXT == 14);
+       CLASSERT(LLOG_AGENT_ORIG_CTXT == 15);
+       CLASSERT(LLOG_MAX_CTXTS == 16);
 
        /* Checks for struct llogd_conn_body */
        LASSERTF((int)sizeof(struct llogd_conn_body) == 40, "found %lld\n",