@@ -216,7 +216,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;
if (sbi->ll_flags & LL_SBI_LRU_RESIZE)
data->ocd_connect_flags |= OBD_CONNECT_LRU_RESIZE;
@@ -945,6 +945,10 @@ 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);
req_capsule_set_size(&req->rq_pill, &RMF_MDT_MD, RCL_SERVER,
@@ -120,7 +120,9 @@
"wbc", /* 0x40 */
"lock_convert", /* 0x80 */
"archive_id_array", /* 0x100 */
- "selinux_policy", /* 0x200 */
+ "unknown", /* 0x200 */
+ "selinux_policy", /* 0x400 */
+ "lsom", /* 0x800 */
NULL
};
@@ -1146,6 +1146,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 int)OBD_CKSUM_CRC32);
LASSERTF(OBD_CKSUM_ADLER == 0x00000002UL, "found 0x%.8xUL\n",
@@ -806,6 +806,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