Whamcloud - gitweb
LU-12021 lsom: Add an OBD_CONNECT2_LSOM connect flag 43/34343/4
authorQian Yingjin <qian@ddn.com>
Thu, 28 Feb 2019 08:05:29 +0000 (16:05 +0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 18 Apr 2019 22:09:31 +0000 (22:09 +0000)
Add an OBD_CONNECT2_LSOM connect flag so that clients do not send
MDS_ATTR_LSIZE and MDS_ATTR_LBLOCKS flags to the old servers that
do not support them.

Signed-off-by: Qian Yingjin <qian@ddn.com>
Change-Id: I266c74e56c2cb1462e204d6fd4f1399f10621416
Reviewed-on: https://review.whamcloud.com/34343
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Aurelien Degremont <degremoa@amazon.com>
lustre/include/uapi/linux/lustre/lustre_idl.h
lustre/llite/llite_lib.c
lustre/mdc/mdc_request.c
lustre/mdt/mdt_lib.c
lustre/obdclass/lprocfs_status.c
lustre/ptlrpc/wiretest.c
lustre/utils/wirecheck.c
lustre/utils/wiretest.c

index aca742b..4c697d4 100644 (file)
@@ -834,6 +834,7 @@ struct ptlrpc_body_v2 {
 #define OBD_CONNECT2_LOCK_CONVERT      0x80ULL /* IBITS lock convert support */
 #define OBD_CONNECT2_ARCHIVE_ID_ARRAY  0x100ULL /* store HSM archive_id in array */
 #define OBD_CONNECT2_SELINUX_POLICY    0x400ULL /* has client SELinux policy */
+#define OBD_CONNECT2_LSOM              0x800ULL /* LSOM support */
 
 /* XXX README XXX:
  * Please DO NOT add flag values here before first ensuring that this same
@@ -889,7 +890,8 @@ struct ptlrpc_body_v2 {
                                OBD_CONNECT2_LOCK_CONVERT | \
                                OBD_CONNECT2_DIR_MIGRATE | \
                                OBD_CONNECT2_ARCHIVE_ID_ARRAY | \
-                               OBD_CONNECT2_SELINUX_POLICY)
+                               OBD_CONNECT2_SELINUX_POLICY | \
+                               OBD_CONNECT2_LSOM)
 
 #define OST_CONNECT_SUPPORTED  (OBD_CONNECT_SRVLOCK | OBD_CONNECT_GRANT | \
                                OBD_CONNECT_REQPORTAL | OBD_CONNECT_VERSION | \
index 7ec8695..97305de 100644 (file)
@@ -228,7 +228,8 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt,
                                   OBD_CONNECT2_LOCK_CONVERT |
                                   OBD_CONNECT2_DIR_MIGRATE |
                                   OBD_CONNECT2_SUM_STATFS |
-                                  OBD_CONNECT2_ARCHIVE_ID_ARRAY;
+                                  OBD_CONNECT2_ARCHIVE_ID_ARRAY |
+                                  OBD_CONNECT2_LSOM;
 
 #ifdef HAVE_LRU_RESIZE_SUPPORT
         if (sbi->ll_flags & LL_SBI_LRU_RESIZE)
index 8e85aeb..048c25a 100644 (file)
@@ -937,6 +937,9 @@ static int mdc_close(struct obd_export *exp, struct md_op_data *op_data,
         req->rq_request_portal = MDS_READPAGE_PORTAL;
         ptlrpc_at_set_req_timeout(req);
 
+       if (!(exp_connect_flags2(exp) & OBD_CONNECT2_LSOM))
+               op_data->op_xvalid &= ~(OP_XVALID_LAZYSIZE |
+                                       OP_XVALID_LAZYBLOCKS);
 
         mdc_close_pack(req, op_data);
 
index 90123c4..428abef 100644 (file)
@@ -995,7 +995,7 @@ static __u64 mdt_attr_valid_xlate(__u64 in, struct mdt_reint_record *rr,
                MDS_ATTR_FROM_OPEN | MDS_ATTR_LSIZE | MDS_ATTR_LBLOCKS |
                MDS_ATTR_OVERRIDE);
        if (in != 0)
-               CERROR("Unknown attr bits: %#llx\n", in);
+               CDEBUG(D_INFO, "Unknown attr bits: %#llx\n", in);
        return out;
 }
 
index b352d6e..8894a38 100644 (file)
@@ -782,7 +782,9 @@ static const char *obd_connect_names[] = {
        "wbc",          /* 0x40 */
        "lock_convert",  /* 0x80 */
        "archive_id_array",     /* 0x100 */
-       "selinux_policy",       /* 0x200 */
+       "unknown",              /* 0x200 */
+       "selinux_policy",       /* 0x400 */
+       "lsom",                 /* 0x800 */
        NULL
 };
 
index 0188129..2f9d7d9 100644 (file)
@@ -1338,6 +1338,8 @@ void lustre_assert_wire_constants(void)
                 OBD_CONNECT2_ARCHIVE_ID_ARRAY);
        LASSERTF(OBD_CONNECT2_SELINUX_POLICY == 0x400ULL, "found 0x%.16llxULL\n",
                 OBD_CONNECT2_SELINUX_POLICY);
+       LASSERTF(OBD_CONNECT2_LSOM == 0x800ULL, "found 0x%.16llxULL\n",
+                OBD_CONNECT2_LSOM);
        LASSERTF(OBD_CKSUM_CRC32 == 0x00000001UL, "found 0x%.8xUL\n",
                (unsigned)OBD_CKSUM_CRC32);
        LASSERTF(OBD_CKSUM_ADLER == 0x00000002UL, "found 0x%.8xUL\n",
index dac04de..d3e3675 100644 (file)
@@ -606,6 +606,7 @@ check_obd_connect_data(void)
        CHECK_DEFINE_64X(OBD_CONNECT2_LOCK_CONVERT);
        CHECK_DEFINE_64X(OBD_CONNECT2_ARCHIVE_ID_ARRAY);
        CHECK_DEFINE_64X(OBD_CONNECT2_SELINUX_POLICY);
+       CHECK_DEFINE_64X(OBD_CONNECT2_LSOM);
 
        CHECK_VALUE_X(OBD_CKSUM_CRC32);
        CHECK_VALUE_X(OBD_CKSUM_ADLER);
index ec0c08c..c494c95 100644 (file)
@@ -1360,6 +1360,8 @@ void lustre_assert_wire_constants(void)
                 OBD_CONNECT2_ARCHIVE_ID_ARRAY);
        LASSERTF(OBD_CONNECT2_SELINUX_POLICY == 0x400ULL, "found 0x%.16llxULL\n",
                 OBD_CONNECT2_SELINUX_POLICY);
+       LASSERTF(OBD_CONNECT2_LSOM == 0x800ULL, "found 0x%.16llxULL\n",
+                OBD_CONNECT2_LSOM);
        LASSERTF(OBD_CKSUM_CRC32 == 0x00000001UL, "found 0x%.8xUL\n",
                (unsigned)OBD_CKSUM_CRC32);
        LASSERTF(OBD_CKSUM_ADLER == 0x00000002UL, "found 0x%.8xUL\n",