Whamcloud - gitweb
LU-18176 idl: reserve OBD_CONNECT2_UPDATE_LAYOUT flags 81/56181/8
authorBobi Jam <bobijam@whamcloud.com>
Wed, 28 Aug 2024 14:02:42 +0000 (22:02 +0800)
committerOleg Drokin <green@whamcloud.com>
Sun, 24 Nov 2024 06:01:37 +0000 (06:01 +0000)
Reserve some bits to be used in CSDC:
- OBD_CONNECT2_UPDATE_LAYOUT to negotiate new intent flag
- LAYOUT_INTENT_CHANGE to allow changing layout flags
- LAIF_INCOMPRESSIBLE to set LCME_FL_NOCOMPR flag in layout

Test-Parameters: trivial
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: Ifabeb6ce2669f9c88e1bba176b9ecc75e9b2b935
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56181
Reviewed-by: Artem Blagodarenko <ablagodarenko@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/include/cl_object.h
lustre/include/uapi/linux/lustre/lustre_idl.h
lustre/obdclass/lprocfs_status.c
lustre/ptlrpc/wiretest.c
lustre/utils/wirecheck.c
lustre/utils/wiretest.c

index 4b14acf..042c6a1 100644 (file)
@@ -172,6 +172,7 @@ enum cl_attr_valid {
        CAT_UID         = BIT(7),
        CAT_GID         = BIT(8),
        CAT_PROJID      = BIT(9),
+       CAT_COMPRESSIBLE= BIT(10),
 };
 
 /**
index 354618b..119ae1a 100644 (file)
@@ -846,6 +846,7 @@ struct ptlrpc_body_v2 {
 #define OBD_CONNECT2_UNALIGNED_DIO     0x400000000ULL /* unaligned DIO */
 #define OBD_CONNECT2_CONN_POLICY       0x800000000ULL /* server-side connection policy */
 #define OBD_CONNECT2_MIRROR_ID_FIX     0x2000000000ULL /* rr_mirror_id move */
+#define OBD_CONNECT2_UPDATE_LAYOUT     0x4000000000ULL /* update compressibility */
 /* XXX README XXX README XXX README XXX README XXX README XXX README XXX
  * Please DO NOT add OBD_CONNECT flags before first ensuring that this value
  * is not in use by some other branch/patch.  Email adilger@whamcloud.com
@@ -3439,6 +3440,16 @@ enum layout_intent_opc {
        LAYOUT_INTENT_RESTORE   = 6,    /** reserved for HSM restore */
        LAYOUT_INTENT_PCCRO_SET = 7,    /** set read-only layout for PCC */
        LAYOUT_INTENT_PCCRO_CLEAR = 8,  /** clear read-only layout */
+       LAYOUT_INTENT_CHANGE    = 9,    /** change layout flag */
+};
+
+/**
+ * used for lai_flags/lai_values, 32bit field; if a bit is set in lai_flags,
+ * and the corresponding bit value in lai_values determines whether that state
+ * should be set or cleared.
+ */
+enum layout_intent_flags {
+       LAIF_INCOMPRESSIBLE     = 1U << 0,   /* 0x0001 change compressibility */
 };
 
 /* enqueue layout lock with intent */
index d1b86bd..18174af 100644 (file)
@@ -656,6 +656,7 @@ static const char *const obd_connect_names[] = {
        "conn_policy",                  /* 0x800000000 */
        "sparse_read",                 /* 0x1000000000 */
        "mirror_id_fix",               /* 0x2000000000 */
+       "update_layout",               /* 0x4000000000 */
        NULL
 };
 
index c8de990..ec54baa 100644 (file)
@@ -1469,6 +1469,8 @@ void lustre_assert_wire_constants(void)
                 OBD_CONNECT2_CONN_POLICY);
        LASSERTF(OBD_CONNECT2_MIRROR_ID_FIX == 0x2000000000ULL, "found 0x%.16llxULL\n",
                 OBD_CONNECT2_MIRROR_ID_FIX);
+       LASSERTF(OBD_CONNECT2_UPDATE_LAYOUT == 0x4000000000ULL, "found 0x%.16llxULL\n",
+                OBD_CONNECT2_UPDATE_LAYOUT);
 
        LASSERTF(OBD_CKSUM_CRC32 == 0x00000001UL, "found 0x%.8xUL\n",
                (unsigned)OBD_CKSUM_CRC32);
@@ -5155,6 +5157,10 @@ void lustre_assert_wire_constants(void)
                 (long long)LAYOUT_INTENT_PCCRO_SET);
        LASSERTF(LAYOUT_INTENT_PCCRO_CLEAR == 8, "found %lld\n",
                 (long long)LAYOUT_INTENT_PCCRO_CLEAR);
+       LASSERTF(LAYOUT_INTENT_CHANGE == 9, "found %lld\n",
+                (long long)LAYOUT_INTENT_CHANGE);
+       LASSERTF(LAIF_INCOMPRESSIBLE == 1, "found %lld\n",
+                (long long)LAIF_INCOMPRESSIBLE);
 
        /* Checks for struct hsm_action_item */
        LASSERTF((int)sizeof(struct hsm_action_item) == 72, "found %lld\n",
index c243416..de95b71 100644 (file)
@@ -704,6 +704,7 @@ check_obd_connect_data(void)
        CHECK_DEFINE_64X(OBD_CONNECT2_UNALIGNED_DIO);
        CHECK_DEFINE_64X(OBD_CONNECT2_CONN_POLICY);
        CHECK_DEFINE_64X(OBD_CONNECT2_MIRROR_ID_FIX);
+       CHECK_DEFINE_64X(OBD_CONNECT2_UPDATE_LAYOUT);
 
        BLANK_LINE();
        CHECK_VALUE_X(OBD_CKSUM_CRC32);
@@ -2543,6 +2544,9 @@ static void check_layout_intent(void)
        CHECK_VALUE(LAYOUT_INTENT_RESTORE);
        CHECK_VALUE(LAYOUT_INTENT_PCCRO_SET);
        CHECK_VALUE(LAYOUT_INTENT_PCCRO_CLEAR);
+       CHECK_VALUE(LAYOUT_INTENT_CHANGE);
+
+       CHECK_VALUE(LAIF_INCOMPRESSIBLE);
 }
 
 static void check_hsm_state_set(void)
index 19a6d25..76fe5b7 100644 (file)
@@ -1494,6 +1494,8 @@ void lustre_assert_wire_constants(void)
                 OBD_CONNECT2_CONN_POLICY);
        LASSERTF(OBD_CONNECT2_MIRROR_ID_FIX == 0x2000000000ULL, "found 0x%.16llxULL\n",
                 OBD_CONNECT2_MIRROR_ID_FIX);
+       LASSERTF(OBD_CONNECT2_UPDATE_LAYOUT == 0x4000000000ULL, "found 0x%.16llxULL\n",
+                OBD_CONNECT2_UPDATE_LAYOUT);
 
        LASSERTF(OBD_CKSUM_CRC32 == 0x00000001UL, "found 0x%.8xUL\n",
                (unsigned)OBD_CKSUM_CRC32);
@@ -5180,6 +5182,10 @@ void lustre_assert_wire_constants(void)
                 (long long)LAYOUT_INTENT_PCCRO_SET);
        LASSERTF(LAYOUT_INTENT_PCCRO_CLEAR == 8, "found %lld\n",
                 (long long)LAYOUT_INTENT_PCCRO_CLEAR);
+       LASSERTF(LAYOUT_INTENT_CHANGE == 9, "found %lld\n",
+                (long long)LAYOUT_INTENT_CHANGE);
+       LASSERTF(LAIF_INCOMPRESSIBLE == 1, "found %lld\n",
+                (long long)LAIF_INCOMPRESSIBLE);
 
        /* Checks for struct hsm_action_item */
        LASSERTF((int)sizeof(struct hsm_action_item) == 72, "found %lld\n",