Whamcloud - gitweb
LU-11014 mdc: remove obsolete intent opcodes
[fs/lustre-release.git] / lustre / ptlrpc / layout.c
index 0156712..914f151 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2011, 2017, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
  * of the format that the request conforms to.
  */
 
-#if !defined(__REQ_LAYOUT_USER__)
-
 #define DEBUG_SUBSYSTEM S_RPC
 
-#ifdef __KERNEL__
 #include <linux/module.h>
-#else
-# include <liblustre.h>
-#endif
-
-/* LUSTRE_VERSION_CODE */
-#include <lustre_ver.h>
 
-#include <obd_support.h>
-/* lustre_swab_mdt_body */
-#include <lustre/lustre_idl.h>
-/* obd2cli_tgt() (required by DEBUG_REQ()) */
+#include <llog_swab.h>
+#include <lustre_debug.h>
+#include <lustre_swab.h>
 #include <obd.h>
+#include <obd_support.h>
 
-/* __REQ_LAYOUT_USER__ */
-#endif
 /* struct ptlrpc_request, lustre_msg* */
 #include <lustre_req_layout.h>
-#include <lustre_update.h>
 #include <lustre_acl.h>
-#include <lustre_debug.h>
 
 /*
  * RQFs (see below) refer to two struct req_msg_field arrays describing the
@@ -87,10 +70,12 @@ static const struct req_msg_field *mgs_target_info_only[] = {
         &RMF_MGS_TARGET_INFO
 };
 
+#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 13, 53, 0)
 static const struct req_msg_field *mgs_set_info[] = {
         &RMF_PTLRPC_BODY,
         &RMF_MGS_SEND_PARAM
 };
+#endif
 
 static const struct req_msg_field *mgs_config_read_client[] = {
         &RMF_PTLRPC_BODY,
@@ -102,11 +87,6 @@ static const struct req_msg_field *mgs_config_read_server[] = {
         &RMF_MGS_CONFIG_RES
 };
 
-static const struct req_msg_field *log_cancel_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_LOGCOOKIES
-};
-
 static const struct req_msg_field *mdt_body_only[] = {
         &RMF_PTLRPC_BODY,
         &RMF_MDT_BODY
@@ -149,6 +129,15 @@ static const struct req_msg_field *mdt_close_client[] = {
         &RMF_CAPA1
 };
 
+static const struct req_msg_field *mdt_close_intent_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_MDT_EPOCH,
+       &RMF_REC_REINT,
+       &RMF_CAPA1,
+       &RMF_CLOSE_DATA,
+       &RMF_U32
+};
+
 static const struct req_msg_field *obd_statfs_server[] = {
         &RMF_PTLRPC_BODY,
         &RMF_OBD_STATFS
@@ -176,6 +165,16 @@ static const struct req_msg_field *fld_query_server[] = {
         &RMF_FLD_MDFLD
 };
 
+static const struct req_msg_field *fld_read_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_FLD_MDFLD
+};
+
+static const struct req_msg_field *fld_read_server[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_GENERIC_DATA
+};
+
 static const struct req_msg_field *mds_getattr_name_client[] = {
         &RMF_PTLRPC_BODY,
         &RMF_MDT_BODY,
@@ -204,31 +203,37 @@ static const struct req_msg_field *mds_reint_create_slave_client[] = {
         &RMF_DLM_REQ
 };
 
-static const struct req_msg_field *mds_reint_create_rmt_acl_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_REC_REINT,
-        &RMF_CAPA1,
-        &RMF_NAME,
-        &RMF_EADATA,
-        &RMF_DLM_REQ
+static const struct req_msg_field *mds_reint_create_acl_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_REC_REINT,
+       &RMF_CAPA1,
+       &RMF_NAME,
+       &RMF_EADATA,
+       &RMF_DLM_REQ,
+       &RMF_FILE_SECCTX_NAME,
+       &RMF_FILE_SECCTX
 };
 
 static const struct req_msg_field *mds_reint_create_sym_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_REC_REINT,
-        &RMF_CAPA1,
-        &RMF_NAME,
-        &RMF_SYMTGT,
-        &RMF_DLM_REQ
+       &RMF_PTLRPC_BODY,
+       &RMF_REC_REINT,
+       &RMF_CAPA1,
+       &RMF_NAME,
+       &RMF_SYMTGT,
+       &RMF_DLM_REQ,
+       &RMF_FILE_SECCTX_NAME,
+       &RMF_FILE_SECCTX
 };
 
 static const struct req_msg_field *mds_reint_open_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_REC_REINT,
-        &RMF_CAPA1,
-        &RMF_CAPA2,
-        &RMF_NAME,
-        &RMF_EADATA
+       &RMF_PTLRPC_BODY,
+       &RMF_REC_REINT,
+       &RMF_CAPA1,
+       &RMF_CAPA2,
+       &RMF_NAME,
+       &RMF_EADATA,
+       &RMF_FILE_SECCTX_NAME,
+       &RMF_FILE_SECCTX
 };
 
 static const struct req_msg_field *mds_reint_open_server[] = {
@@ -267,6 +272,19 @@ static const struct req_msg_field *mds_reint_rename_client[] = {
         &RMF_DLM_REQ
 };
 
+static const struct req_msg_field *mds_reint_migrate_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_REC_REINT,
+       &RMF_CAPA1,
+       &RMF_CAPA2,
+       &RMF_NAME,
+       &RMF_SYMTGT,
+       &RMF_DLM_REQ,
+       &RMF_MDT_EPOCH,
+       &RMF_CLOSE_DATA,
+       &RMF_EADATA
+};
+
 static const struct req_msg_field *mds_last_unlink_server[] = {
         &RMF_PTLRPC_BODY,
         &RMF_MDT_BODY,
@@ -291,7 +309,14 @@ static const struct req_msg_field *mds_reint_setxattr_client[] = {
         &RMF_REC_REINT,
         &RMF_CAPA1,
         &RMF_NAME,
-        &RMF_EADATA
+        &RMF_EADATA,
+       &RMF_DLM_REQ
+};
+
+static const struct req_msg_field *mds_reint_resync[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_REC_REINT,
+       &RMF_DLM_REQ
 };
 
 static const struct req_msg_field *mdt_swap_layouts[] = {
@@ -400,14 +425,16 @@ static const struct req_msg_field *ldlm_intent_layout_client[] = {
        &RMF_LAYOUT_INTENT,
        &RMF_EADATA /* for new layout to be set up */
 };
+
 static const struct req_msg_field *ldlm_intent_open_server[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_DLM_REP,
-        &RMF_MDT_BODY,
-        &RMF_MDT_MD,
-        &RMF_ACL,
-        &RMF_CAPA1,
-        &RMF_CAPA2
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REP,
+       &RMF_MDT_BODY,
+       &RMF_MDT_MD,
+       &RMF_ACL,
+       &RMF_CAPA1,
+       &RMF_CAPA2,
+       &RMF_NIOBUF_INLINE,
 };
 
 static const struct req_msg_field *ldlm_intent_getattr_client[] = {
@@ -429,33 +456,53 @@ static const struct req_msg_field *ldlm_intent_getattr_server[] = {
 };
 
 static const struct req_msg_field *ldlm_intent_create_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_DLM_REQ,
-        &RMF_LDLM_INTENT,
-        &RMF_REC_REINT,    /* coincides with mds_reint_create_client[] */
-        &RMF_CAPA1,
-        &RMF_NAME,
-        &RMF_EADATA
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REQ,
+       &RMF_LDLM_INTENT,
+       &RMF_REC_REINT,    /* coincides with mds_reint_create_client[] */
+       &RMF_CAPA1,
+       &RMF_NAME,
+       &RMF_EADATA,
+       &RMF_FILE_SECCTX_NAME,
+       &RMF_FILE_SECCTX
 };
 
 static const struct req_msg_field *ldlm_intent_open_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_DLM_REQ,
-        &RMF_LDLM_INTENT,
-        &RMF_REC_REINT,    /* coincides with mds_reint_open_client[] */
-        &RMF_CAPA1,
-        &RMF_CAPA2,
-        &RMF_NAME,
-        &RMF_EADATA
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REQ,
+       &RMF_LDLM_INTENT,
+       &RMF_REC_REINT,    /* coincides with mds_reint_open_client[] */
+       &RMF_CAPA1,
+       &RMF_CAPA2,
+       &RMF_NAME,
+       &RMF_EADATA,
+       &RMF_FILE_SECCTX_NAME,
+       &RMF_FILE_SECCTX
 };
 
-static const struct req_msg_field *ldlm_intent_unlink_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_DLM_REQ,
-        &RMF_LDLM_INTENT,
-        &RMF_REC_REINT,    /* coincides with mds_reint_unlink_client[] */
-        &RMF_CAPA1,
-        &RMF_NAME
+static const struct req_msg_field *ldlm_intent_getxattr_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REQ,
+       &RMF_LDLM_INTENT,
+       &RMF_MDT_BODY,
+       &RMF_CAPA1,
+};
+
+static const struct req_msg_field *ldlm_intent_getxattr_server[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REP,
+       &RMF_MDT_BODY,
+       &RMF_MDT_MD,
+       &RMF_ACL, /* for req_capsule_extend/mdt_intent_policy */
+       &RMF_EADATA,
+       &RMF_EAVALS,
+       &RMF_EAVALS_LENS
+};
+
+static const struct req_msg_field *mds_get_root_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
+       &RMF_NAME
 };
 
 static const struct req_msg_field *mds_getxattr_client[] = {
@@ -492,12 +539,13 @@ static const struct req_msg_field *mds_setattr_server[] = {
 
 static const struct req_msg_field *mds_update_client[] = {
        &RMF_PTLRPC_BODY,
-       &RMF_UPDATE,
+       &RMF_OUT_UPDATE_HEADER,
+       &RMF_OUT_UPDATE_BUF,
 };
 
 static const struct req_msg_field *mds_update_server[] = {
        &RMF_PTLRPC_BODY,
-       &RMF_UPDATE_REPLY,
+       &RMF_OUT_UPDATE_REPLY,
 };
 
 static const struct req_msg_field *llog_origin_handle_create_client[] = {
@@ -516,11 +564,6 @@ static const struct req_msg_field *llog_log_hdr_only[] = {
         &RMF_LLOG_LOG_HDR
 };
 
-static const struct req_msg_field *llogd_conn_body_only[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_LLOGD_CONN_BODY
-};
-
 static const struct req_msg_field *llog_origin_handle_next_block_server[] = {
         &RMF_PTLRPC_BODY,
         &RMF_LLOGD_BODY,
@@ -557,16 +600,18 @@ static const struct req_msg_field *ost_destroy_client[] = {
 
 
 static const struct req_msg_field *ost_brw_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_OST_BODY,
-        &RMF_OBD_IOOBJ,
-        &RMF_NIOBUF_REMOTE,
-        &RMF_CAPA1
+       &RMF_PTLRPC_BODY,
+       &RMF_OST_BODY,
+       &RMF_OBD_IOOBJ,
+       &RMF_NIOBUF_REMOTE,
+       &RMF_CAPA1,
+       &RMF_SHORT_IO
 };
 
 static const struct req_msg_field *ost_brw_read_server[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_OST_BODY
+       &RMF_PTLRPC_BODY,
+       &RMF_OST_BODY,
+       &RMF_SHORT_IO
 };
 
 static const struct req_msg_field *ost_brw_write_server[] = {
@@ -582,7 +627,7 @@ static const struct req_msg_field *ost_get_info_generic_server[] = {
 
 static const struct req_msg_field *ost_get_info_generic_client[] = {
         &RMF_PTLRPC_BODY,
-        &RMF_SETINFO_KEY
+       &RMF_GETINFO_KEY
 };
 
 static const struct req_msg_field *ost_get_last_id_server[] = {
@@ -590,9 +635,15 @@ static const struct req_msg_field *ost_get_last_id_server[] = {
         &RMF_OBD_ID
 };
 
+static const struct req_msg_field *ost_get_last_fid_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_GETINFO_KEY,
+       &RMF_FID,
+};
+
 static const struct req_msg_field *ost_get_last_fid_server[] = {
        &RMF_PTLRPC_BODY,
-       &RMF_OST_ID
+       &RMF_FID,
 };
 
 static const struct req_msg_field *ost_get_fiemap_client[] = {
@@ -601,6 +652,13 @@ static const struct req_msg_field *ost_get_fiemap_client[] = {
         &RMF_FIEMAP_VAL
 };
 
+static const struct req_msg_field *ost_ladvise[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_OST_BODY,
+       &RMF_OST_LADVISE_HDR,
+       &RMF_OST_LADVISE,
+};
+
 static const struct req_msg_field *ost_get_fiemap_server[] = {
         &RMF_PTLRPC_BODY,
         &RMF_FIEMAP_VAL
@@ -608,21 +666,30 @@ static const struct req_msg_field *ost_get_fiemap_server[] = {
 
 static const struct req_msg_field *mdt_hsm_progress[] = {
        &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
        &RMF_MDS_HSM_PROGRESS,
 };
 
 static const struct req_msg_field *mdt_hsm_ct_register[] = {
        &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
        &RMF_MDS_HSM_ARCHIVE,
 };
 
+static const struct req_msg_field *mdt_hsm_ct_unregister[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
+};
+
 static const struct req_msg_field *mdt_hsm_action_server[] = {
        &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
        &RMF_MDS_HSM_CURRENT_ACTION,
 };
 
 static const struct req_msg_field *mdt_hsm_state_get_server[] = {
        &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
        &RMF_HSM_USER_STATE,
 };
 
@@ -641,45 +708,55 @@ static const struct req_msg_field *mdt_hsm_request[] = {
        &RMF_GENERIC_DATA,
 };
 
+static const struct req_msg_field *obd_lfsck_request[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_LFSCK_REQUEST,
+};
+
+static const struct req_msg_field *obd_lfsck_reply[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_LFSCK_REPLY,
+};
+
 static struct req_format *req_formats[] = {
         &RQF_OBD_PING,
         &RQF_OBD_SET_INFO,
        &RQF_OBD_IDX_READ,
         &RQF_SEC_CTX,
         &RQF_MGS_TARGET_REG,
+#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 13, 53, 0)
         &RQF_MGS_SET_INFO,
+#endif
         &RQF_MGS_CONFIG_READ,
         &RQF_SEQ_QUERY,
         &RQF_FLD_QUERY,
+       &RQF_FLD_READ,
         &RQF_MDS_CONNECT,
         &RQF_MDS_DISCONNECT,
         &RQF_MDS_GET_INFO,
-        &RQF_MDS_GETSTATUS,
-        &RQF_MDS_STATFS,
-        &RQF_MDS_GETATTR,
-        &RQF_MDS_GETATTR_NAME,
-        &RQF_MDS_GETXATTR,
-        &RQF_MDS_SYNC,
-        &RQF_MDS_CLOSE,
-        &RQF_MDS_PIN,
-        &RQF_MDS_UNPIN,
-        &RQF_MDS_READPAGE,
-        &RQF_MDS_WRITEPAGE,
-        &RQF_MDS_IS_SUBDIR,
-        &RQF_MDS_DONE_WRITING,
-        &RQF_MDS_REINT,
-        &RQF_MDS_REINT_CREATE,
-        &RQF_MDS_REINT_CREATE_RMT_ACL,
-        &RQF_MDS_REINT_CREATE_SLAVE,
-        &RQF_MDS_REINT_CREATE_SYM,
-        &RQF_MDS_REINT_OPEN,
-        &RQF_MDS_REINT_UNLINK,
-        &RQF_MDS_REINT_LINK,
-        &RQF_MDS_REINT_RENAME,
-        &RQF_MDS_REINT_SETATTR,
-        &RQF_MDS_REINT_SETXATTR,
-        &RQF_MDS_QUOTACHECK,
-        &RQF_MDS_QUOTACTL,
+       &RQF_MDS_GET_ROOT,
+       &RQF_MDS_STATFS,
+       &RQF_MDS_GETATTR,
+       &RQF_MDS_GETATTR_NAME,
+       &RQF_MDS_GETXATTR,
+       &RQF_MDS_SYNC,
+       &RQF_MDS_CLOSE,
+       &RQF_MDS_CLOSE_INTENT,
+       &RQF_MDS_READPAGE,
+       &RQF_MDS_REINT,
+       &RQF_MDS_REINT_CREATE,
+       &RQF_MDS_REINT_CREATE_ACL,
+       &RQF_MDS_REINT_CREATE_SLAVE,
+       &RQF_MDS_REINT_CREATE_SYM,
+       &RQF_MDS_REINT_OPEN,
+       &RQF_MDS_REINT_UNLINK,
+       &RQF_MDS_REINT_LINK,
+       &RQF_MDS_REINT_RENAME,
+       &RQF_MDS_REINT_MIGRATE,
+       &RQF_MDS_REINT_SETATTR,
+       &RQF_MDS_REINT_SETXATTR,
+       &RQF_MDS_REINT_RESYNC,
+       &RQF_MDS_QUOTACTL,
        &RQF_MDS_HSM_PROGRESS,
        &RQF_MDS_HSM_CT_REGISTER,
        &RQF_MDS_HSM_CT_UNREGISTER,
@@ -688,11 +765,9 @@ static struct req_format *req_formats[] = {
        &RQF_MDS_HSM_ACTION,
        &RQF_MDS_HSM_REQUEST,
        &RQF_MDS_SWAP_LAYOUTS,
-       &RQF_UPDATE_OBJ,
-       &RQF_QC_CALLBACK,
+       &RQF_OUT_UPDATE,
         &RQF_OST_CONNECT,
         &RQF_OST_DISCONNECT,
-        &RQF_OST_QUOTACHECK,
         &RQF_OST_QUOTACTL,
         &RQF_OST_GETATTR,
         &RQF_OST_SETATTR,
@@ -704,36 +779,37 @@ static struct req_format *req_formats[] = {
         &RQF_OST_BRW_WRITE,
         &RQF_OST_STATFS,
         &RQF_OST_SET_GRANT_INFO,
-        &RQF_OST_GET_INFO_GENERIC,
+       &RQF_OST_GET_INFO,
         &RQF_OST_GET_INFO_LAST_ID,
        &RQF_OST_GET_INFO_LAST_FID,
        &RQF_OST_SET_INFO_LAST_FID,
-        &RQF_OST_GET_INFO_FIEMAP,
-        &RQF_LDLM_ENQUEUE,
-        &RQF_LDLM_ENQUEUE_LVB,
-        &RQF_LDLM_CONVERT,
-        &RQF_LDLM_CANCEL,
-        &RQF_LDLM_CALLBACK,
-        &RQF_LDLM_CP_CALLBACK,
-        &RQF_LDLM_BL_CALLBACK,
-        &RQF_LDLM_GL_CALLBACK,
-       &RQF_LDLM_GL_DESC_CALLBACK,
-        &RQF_LDLM_INTENT,
+       &RQF_OST_GET_INFO_FIEMAP,
+       &RQF_OST_LADVISE,
+       &RQF_LDLM_ENQUEUE,
+       &RQF_LDLM_ENQUEUE_LVB,
+       &RQF_LDLM_CONVERT,
+       &RQF_LDLM_CANCEL,
+       &RQF_LDLM_CALLBACK,
+       &RQF_LDLM_CP_CALLBACK,
+       &RQF_LDLM_BL_CALLBACK,
+       &RQF_LDLM_GL_CALLBACK,
+       &RQF_LDLM_GL_CALLBACK_DESC,
+       &RQF_LDLM_INTENT,
        &RQF_LDLM_INTENT_BASIC,
-        &RQF_LDLM_INTENT_LAYOUT,
-        &RQF_LDLM_INTENT_GETATTR,
-        &RQF_LDLM_INTENT_OPEN,
-        &RQF_LDLM_INTENT_CREATE,
-        &RQF_LDLM_INTENT_UNLINK,
+       &RQF_LDLM_INTENT_LAYOUT,
+       &RQF_LDLM_INTENT_GETATTR,
+       &RQF_LDLM_INTENT_OPEN,
+       &RQF_LDLM_INTENT_CREATE,
+       &RQF_LDLM_INTENT_GETXATTR,
        &RQF_LDLM_INTENT_QUOTA,
        &RQF_QUOTA_DQACQ,
-        &RQF_LOG_CANCEL,
         &RQF_LLOG_ORIGIN_HANDLE_CREATE,
-        &RQF_LLOG_ORIGIN_HANDLE_DESTROY,
         &RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK,
         &RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK,
         &RQF_LLOG_ORIGIN_HANDLE_READ_HEADER,
-        &RQF_LLOG_ORIGIN_CONNECT
+       &RQF_CONNECT,
+       &RQF_LFSCK_NOTIFY,
+       &RQF_LFSCK_QUERY,
 };
 
 struct req_msg_field {
@@ -791,11 +867,13 @@ struct req_msg_field RMF_MGS_TARGET_INFO =
                     lustre_swab_mgs_target_info, NULL);
 EXPORT_SYMBOL(RMF_MGS_TARGET_INFO);
 
+#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 13, 53, 0)
 struct req_msg_field RMF_MGS_SEND_PARAM =
         DEFINE_MSGF("mgs_send_param", 0,
                     sizeof(struct mgs_send_param),
                     NULL, NULL);
 EXPORT_SYMBOL(RMF_MGS_SEND_PARAM);
+#endif
 
 struct req_msg_field RMF_MGS_CONFIG_BODY =
         DEFINE_MSGF("mgs_config_read request", 0,
@@ -810,8 +888,8 @@ struct req_msg_field RMF_MGS_CONFIG_RES =
 EXPORT_SYMBOL(RMF_MGS_CONFIG_RES);
 
 struct req_msg_field RMF_U32 =
-        DEFINE_MSGF("generic u32", 0,
-                    sizeof(__u32), lustre_swab_generic_32s, NULL);
+       DEFINE_MSGF("generic u32", RMF_F_STRUCT_ARRAY,
+                   sizeof(__u32), lustre_swab_generic_32s, NULL);
 EXPORT_SYMBOL(RMF_U32);
 
 struct req_msg_field RMF_SETINFO_VAL =
@@ -879,6 +957,11 @@ struct req_msg_field RMF_PTLRPC_BODY =
                     sizeof(struct ptlrpc_body), lustre_swab_ptlrpc_body, NULL);
 EXPORT_SYMBOL(RMF_PTLRPC_BODY);
 
+struct req_msg_field RMF_CLOSE_DATA =
+       DEFINE_MSGF("data_version", 0,
+                   sizeof(struct close_data), lustre_swab_close_data, NULL);
+EXPORT_SYMBOL(RMF_CLOSE_DATA);
+
 struct req_msg_field RMF_OBD_STATFS =
         DEFINE_MSGF("obd_statfs", 0,
                     sizeof(struct obd_statfs), lustre_swab_obd_statfs, NULL);
@@ -910,6 +993,14 @@ struct req_msg_field RMF_STRING =
         DEFINE_MSGF("string", RMF_F_STRING, -1, NULL, NULL);
 EXPORT_SYMBOL(RMF_STRING);
 
+struct req_msg_field RMF_FILE_SECCTX_NAME =
+       DEFINE_MSGF("file_secctx_name", RMF_F_STRING, -1, NULL, NULL);
+EXPORT_SYMBOL(RMF_FILE_SECCTX_NAME);
+
+struct req_msg_field RMF_FILE_SECCTX =
+       DEFINE_MSGF("file_secctx", 0, -1, NULL, NULL);
+EXPORT_SYMBOL(RMF_FILE_SECCTX);
+
 struct req_msg_field RMF_LLOGD_BODY =
         DEFINE_MSGF("llogd_body", 0,
                     sizeof(struct llogd_body), lustre_swab_llogd_body, NULL);
@@ -937,21 +1028,10 @@ struct req_msg_field RMF_CONN =
 EXPORT_SYMBOL(RMF_CONN);
 
 struct req_msg_field RMF_CONNECT_DATA =
-        DEFINE_MSGF("cdata",
-                    RMF_F_NO_SIZE_CHECK /* we allow extra space for interop */,
-#if LUSTRE_VERSION_CODE > OBD_OCD_VERSION(2, 7, 50, 0)
-                    sizeof(struct obd_connect_data),
-#else
-/* For interoperability with 1.8 and 2.0 clients/servers.
- * The RPC verification code allows larger RPC buffers, but not
- * smaller buffers.  Until we no longer need to keep compatibility
- * with older servers/clients we can only check that the buffer
- * size is at least as large as obd_connect_data_v1.  That is not
- * not in itself harmful, since the chance of just corrupting this
- * field is low.  See JIRA LU-16 for details. */
-                    sizeof(struct obd_connect_data_v1),
-#endif
-                    lustre_swab_connect, NULL);
+       DEFINE_MSGF("cdata",
+                   RMF_F_NO_SIZE_CHECK /* we allow extra space for interop */,
+                   sizeof(struct obd_connect_data),
+                   lustre_swab_connect, NULL);
 EXPORT_SYMBOL(RMF_CONNECT_DATA);
 
 struct req_msg_field RMF_DLM_REQ =
@@ -975,8 +1055,7 @@ struct req_msg_field RMF_DLM_LVB =
 EXPORT_SYMBOL(RMF_DLM_LVB);
 
 struct req_msg_field RMF_DLM_GL_DESC =
-       DEFINE_MSGF("dlm_gl_desc", 0, sizeof(union ldlm_gl_desc),
-                   lustre_swab_gl_desc, NULL);
+       DEFINE_MSGF("dlm_gl_desc", 0, sizeof(union ldlm_gl_desc), NULL, NULL);
 EXPORT_SYMBOL(RMF_DLM_GL_DESC);
 
 struct req_msg_field RMF_MDT_MD =
@@ -993,9 +1072,10 @@ struct req_msg_field RMF_EADATA = DEFINE_MSGF("eadata", 0, -1,
                                                     NULL, NULL);
 EXPORT_SYMBOL(RMF_EADATA);
 
-struct req_msg_field RMF_ACL =
-        DEFINE_MSGF("acl", RMF_F_NO_SIZE_CHECK,
-                    LUSTRE_POSIX_ACL_MAX_SIZE, NULL, NULL);
+struct req_msg_field RMF_EAVALS = DEFINE_MSGF("eavals", 0, -1, NULL, NULL);
+EXPORT_SYMBOL(RMF_EAVALS);
+
+struct req_msg_field RMF_ACL = DEFINE_MSGF("acl", 0, -1, NULL, NULL);
 EXPORT_SYMBOL(RMF_ACL);
 
 /* FIXME: this should be made to use RMF_F_STRUCT_ARRAY */
@@ -1024,8 +1104,9 @@ EXPORT_SYMBOL(RMF_LAYOUT_INTENT);
  * OST request field.
  */
 struct req_msg_field RMF_OST_BODY =
-        DEFINE_MSGF("ost_body", 0,
-                    sizeof(struct ost_body), lustre_swab_ost_body, dump_ost_body);
+       DEFINE_MSGF("ost_body", 0,
+                   sizeof(struct ost_body), lustre_swab_ost_body,
+                   dump_ost_body);
 EXPORT_SYMBOL(RMF_OST_BODY);
 
 struct req_msg_field RMF_OBD_IOOBJ =
@@ -1039,14 +1120,25 @@ struct req_msg_field RMF_NIOBUF_REMOTE =
                     dump_rniobuf);
 EXPORT_SYMBOL(RMF_NIOBUF_REMOTE);
 
+struct req_msg_field RMF_NIOBUF_INLINE =
+       DEFINE_MSGF("niobuf_inline", RMF_F_NO_SIZE_CHECK,
+                   sizeof(struct niobuf_remote), lustre_swab_niobuf_remote,
+                   dump_rniobuf);
+EXPORT_SYMBOL(RMF_NIOBUF_INLINE);
+
 struct req_msg_field RMF_RCS =
-        DEFINE_MSGF("niobuf_remote", RMF_F_STRUCT_ARRAY, sizeof(__u32),
-                    lustre_swab_generic_32s, dump_rcs);
+       DEFINE_MSGF("niobuf_rcs", RMF_F_STRUCT_ARRAY, sizeof(__u32),
+                   lustre_swab_generic_32s, dump_rcs);
 EXPORT_SYMBOL(RMF_RCS);
 
+struct req_msg_field RMF_EAVALS_LENS =
+       DEFINE_MSGF("eavals_lens", RMF_F_STRUCT_ARRAY, sizeof(__u32),
+               lustre_swab_generic_32s, NULL);
+EXPORT_SYMBOL(RMF_EAVALS_LENS);
+
 struct req_msg_field RMF_OBD_ID =
-        DEFINE_MSGF("obd_id", 0,
-                    sizeof(obd_id), lustre_swab_ost_last_id, NULL);
+       DEFINE_MSGF("obd_id", 0,
+                   sizeof(__u64), lustre_swab_ost_last_id, NULL);
 EXPORT_SYMBOL(RMF_OBD_ID);
 
 struct req_msg_field RMF_FID =
@@ -1072,6 +1164,9 @@ struct req_msg_field RMF_IDX_INFO =
        DEFINE_MSGF("idx_info", 0, sizeof(struct idx_info),
                    lustre_swab_idx_info, NULL);
 EXPORT_SYMBOL(RMF_IDX_INFO);
+struct req_msg_field RMF_SHORT_IO =
+       DEFINE_MSGF("short_io", 0, -1, NULL, NULL);
+EXPORT_SYMBOL(RMF_SHORT_IO);
 struct req_msg_field RMF_HSM_USER_STATE =
        DEFINE_MSGF("hsm_user_state", 0, sizeof(struct hsm_user_state),
                    lustre_swab_hsm_user_state, NULL);
@@ -1108,30 +1203,62 @@ struct req_msg_field RMF_MDS_HSM_REQUEST =
                    lustre_swab_hsm_request, NULL);
 EXPORT_SYMBOL(RMF_MDS_HSM_REQUEST);
 
-struct req_msg_field RMF_UPDATE = DEFINE_MSGF("update", 0, -1,
-                                             lustre_swab_update_buf, NULL);
-EXPORT_SYMBOL(RMF_UPDATE);
+struct req_msg_field RMF_OUT_UPDATE = DEFINE_MSGF("object_update", 0, -1,
+                               lustre_swab_object_update_request, NULL);
+EXPORT_SYMBOL(RMF_OUT_UPDATE);
 
-struct req_msg_field RMF_UPDATE_REPLY = DEFINE_MSGF("update_reply", 0, -1,
-                                               lustre_swab_update_reply_buf,
-                                                   NULL);
-EXPORT_SYMBOL(RMF_UPDATE_REPLY);
+struct req_msg_field RMF_OUT_UPDATE_REPLY =
+                       DEFINE_MSGF("object_update_reply", 0, -1,
+                                   lustre_swab_object_update_reply, NULL);
+EXPORT_SYMBOL(RMF_OUT_UPDATE_REPLY);
 
 struct req_msg_field RMF_SWAP_LAYOUTS =
        DEFINE_MSGF("swap_layouts", 0, sizeof(struct  mdc_swap_layouts),
                    lustre_swab_swap_layouts, NULL);
 EXPORT_SYMBOL(RMF_SWAP_LAYOUTS);
+
+struct req_msg_field RMF_LFSCK_REQUEST =
+       DEFINE_MSGF("lfsck_request", 0, sizeof(struct lfsck_request),
+                   lustre_swab_lfsck_request, NULL);
+EXPORT_SYMBOL(RMF_LFSCK_REQUEST);
+
+struct req_msg_field RMF_LFSCK_REPLY =
+       DEFINE_MSGF("lfsck_reply", 0, sizeof(struct lfsck_reply),
+                   lustre_swab_lfsck_reply, NULL);
+EXPORT_SYMBOL(RMF_LFSCK_REPLY);
+
+struct req_msg_field RMF_OST_LADVISE_HDR =
+       DEFINE_MSGF("ladvise_request", 0,
+                   sizeof(struct ladvise_hdr),
+                   lustre_swab_ladvise_hdr, NULL);
+EXPORT_SYMBOL(RMF_OST_LADVISE_HDR);
+
+struct req_msg_field RMF_OST_LADVISE =
+       DEFINE_MSGF("ladvise_request", RMF_F_STRUCT_ARRAY,
+                   sizeof(struct lu_ladvise),
+                   lustre_swab_ladvise, NULL);
+EXPORT_SYMBOL(RMF_OST_LADVISE);
+
+struct req_msg_field RMF_OUT_UPDATE_HEADER = DEFINE_MSGF("out_update_header", 0,
+                               -1, lustre_swab_out_update_header, NULL);
+EXPORT_SYMBOL(RMF_OUT_UPDATE_HEADER);
+
+struct req_msg_field RMF_OUT_UPDATE_BUF = DEFINE_MSGF("update_buf",
+                       RMF_F_STRUCT_ARRAY, sizeof(struct out_update_buffer),
+                       lustre_swab_out_update_buffer, NULL);
+EXPORT_SYMBOL(RMF_OUT_UPDATE_BUF);
+
 /*
  * Request formats.
  */
 
 struct req_format {
-        const char *rf_name;
-        int         rf_idx;
-        struct {
-                int                          nr;
-                const struct req_msg_field **d;
-        } rf_fields[RCL_NR];
+       const char *rf_name;
+       size_t      rf_idx;
+       struct {
+               size_t                       nr;
+               const struct req_msg_field **d;
+       } rf_fields[RCL_NR];
 };
 
 #define DEFINE_REQ_FMT(name, client, client_nr, server, server_nr) {    \
@@ -1174,10 +1301,12 @@ struct req_format RQF_MGS_TARGET_REG =
                          mgs_target_info_only);
 EXPORT_SYMBOL(RQF_MGS_TARGET_REG);
 
+#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 13, 53, 0)
 struct req_format RQF_MGS_SET_INFO =
         DEFINE_REQ_FMT0("MGS_SET_INFO", mgs_set_info,
                          mgs_set_info);
 EXPORT_SYMBOL(RQF_MGS_SET_INFO);
+#endif
 
 struct req_format RQF_MGS_CONFIG_READ =
         DEFINE_REQ_FMT0("MGS_CONFIG_READ", mgs_config_read_client,
@@ -1192,17 +1321,24 @@ struct req_format RQF_FLD_QUERY =
         DEFINE_REQ_FMT0("FLD_QUERY", fld_query_client, fld_query_server);
 EXPORT_SYMBOL(RQF_FLD_QUERY);
 
-struct req_format RQF_LOG_CANCEL =
-        DEFINE_REQ_FMT0("OBD_LOG_CANCEL", log_cancel_client, empty);
-EXPORT_SYMBOL(RQF_LOG_CANCEL);
-
-struct req_format RQF_MDS_QUOTACHECK =
-        DEFINE_REQ_FMT0("MDS_QUOTACHECK", quotactl_only, empty);
-EXPORT_SYMBOL(RQF_MDS_QUOTACHECK);
-
-struct req_format RQF_OST_QUOTACHECK =
-        DEFINE_REQ_FMT0("OST_QUOTACHECK", quotactl_only, empty);
-EXPORT_SYMBOL(RQF_OST_QUOTACHECK);
+/* The 'fld_read_server' uses 'RMF_GENERIC_DATA' to hold the 'FLD_QUERY'
+ * RPC reply that is composed of 'struct lu_seq_range_array'. But there
+ * is not registered swabber function for 'RMF_GENERIC_DATA'. So the RPC
+ * peers need to handle the RPC reply with fixed little-endian format.
+ *
+ * In theory, we can define new structure with some swabber registered to
+ * handle the 'FLD_QUERY' RPC reply result automatically. But from the
+ * implementation view, it is not easy to be done within current "struct
+ * req_msg_field" framework. Because the sequence range array in the RPC
+ * reply is not fixed length, instead, its length depends on 'lu_seq_range'
+ * count, that is unknown when prepare the RPC buffer. Generally, for such
+ * flexible length RPC usage, there will be a field in the RPC layout to
+ * indicate the data length. But for the 'FLD_READ' RPC, we have no way to
+ * do that unless we add new length filed that will broken the on-wire RPC
+ * protocol and cause interoperability trouble with old peer. */
+struct req_format RQF_FLD_READ =
+       DEFINE_REQ_FMT0("FLD_READ", fld_read_client, fld_read_server);
+EXPORT_SYMBOL(RQF_FLD_READ);
 
 struct req_format RQF_MDS_QUOTACTL =
         DEFINE_REQ_FMT0("MDS_QUOTACTL", quotactl_only, quotactl_only);
@@ -1212,10 +1348,6 @@ struct req_format RQF_OST_QUOTACTL =
         DEFINE_REQ_FMT0("OST_QUOTACTL", quotactl_only, quotactl_only);
 EXPORT_SYMBOL(RQF_OST_QUOTACTL);
 
-struct req_format RQF_QC_CALLBACK =
-        DEFINE_REQ_FMT0("QC_CALLBACK", quotactl_only, empty);
-EXPORT_SYMBOL(RQF_QC_CALLBACK);
-
 struct req_format RQF_QUOTA_DQACQ =
        DEFINE_REQ_FMT0("QUOTA_DQACQ", quota_body_only, quota_body_only);
 EXPORT_SYMBOL(RQF_QUOTA_DQACQ);
@@ -1226,9 +1358,9 @@ struct req_format RQF_LDLM_INTENT_QUOTA =
                        ldlm_intent_quota_server);
 EXPORT_SYMBOL(RQF_LDLM_INTENT_QUOTA);
 
-struct req_format RQF_MDS_GETSTATUS =
-        DEFINE_REQ_FMT0("MDS_GETSTATUS", mdt_body_only, mdt_body_capa);
-EXPORT_SYMBOL(RQF_MDS_GETSTATUS);
+struct req_format RQF_MDS_GET_ROOT =
+       DEFINE_REQ_FMT0("MDS_GET_ROOT", mds_get_root_client, mdt_body_capa);
+EXPORT_SYMBOL(RQF_MDS_GET_ROOT);
 
 struct req_format RQF_MDS_STATFS =
         DEFINE_REQ_FMT0("MDS_STATFS", empty, obd_statfs_server);
@@ -1261,10 +1393,10 @@ struct req_format RQF_MDS_REINT_CREATE =
                         mds_reint_create_client, mdt_body_capa);
 EXPORT_SYMBOL(RQF_MDS_REINT_CREATE);
 
-struct req_format RQF_MDS_REINT_CREATE_RMT_ACL =
-        DEFINE_REQ_FMT0("MDS_REINT_CREATE_RMT_ACL",
-                        mds_reint_create_rmt_acl_client, mdt_body_capa);
-EXPORT_SYMBOL(RQF_MDS_REINT_CREATE_RMT_ACL);
+struct req_format RQF_MDS_REINT_CREATE_ACL =
+       DEFINE_REQ_FMT0("MDS_REINT_CREATE_ACL",
+                       mds_reint_create_acl_client, mdt_body_capa);
+EXPORT_SYMBOL(RQF_MDS_REINT_CREATE_ACL);
 
 struct req_format RQF_MDS_REINT_CREATE_SLAVE =
         DEFINE_REQ_FMT0("MDS_REINT_CREATE_EA",
@@ -1296,6 +1428,11 @@ struct req_format RQF_MDS_REINT_RENAME =
                         mds_last_unlink_server);
 EXPORT_SYMBOL(RQF_MDS_REINT_RENAME);
 
+struct req_format RQF_MDS_REINT_MIGRATE =
+       DEFINE_REQ_FMT0("MDS_REINT_MIGRATE", mds_reint_migrate_client,
+                       mds_last_unlink_server);
+EXPORT_SYMBOL(RQF_MDS_REINT_MIGRATE);
+
 struct req_format RQF_MDS_REINT_SETATTR =
         DEFINE_REQ_FMT0("MDS_REINT_SETATTR",
                         mds_reint_setattr_client, mds_setattr_server);
@@ -1303,9 +1440,13 @@ EXPORT_SYMBOL(RQF_MDS_REINT_SETATTR);
 
 struct req_format RQF_MDS_REINT_SETXATTR =
         DEFINE_REQ_FMT0("MDS_REINT_SETXATTR",
-                        mds_reint_setxattr_client, mdt_body_only);
+                       mds_reint_setxattr_client, mdt_body_only);
 EXPORT_SYMBOL(RQF_MDS_REINT_SETXATTR);
 
+struct req_format RQF_MDS_REINT_RESYNC =
+       DEFINE_REQ_FMT0("MDS_REINT_RESYNC", mds_reint_resync, mdt_body_only);
+EXPORT_SYMBOL(RQF_MDS_REINT_RESYNC);
+
 struct req_format RQF_MDS_CONNECT =
         DEFINE_REQ_FMT0("MDS_CONNECT",
                         obd_connect_client, obd_connect_server);
@@ -1320,10 +1461,10 @@ struct req_format RQF_MDS_GET_INFO =
                         mds_getinfo_server);
 EXPORT_SYMBOL(RQF_MDS_GET_INFO);
 
-struct req_format RQF_UPDATE_OBJ =
-       DEFINE_REQ_FMT0("OBJECT_UPDATE_OBJ", mds_update_client,
+struct req_format RQF_OUT_UPDATE =
+       DEFINE_REQ_FMT0("OUT_UPDATE", mds_update_client,
                        mds_update_server);
-EXPORT_SYMBOL(RQF_UPDATE_OBJ);
+EXPORT_SYMBOL(RQF_OUT_UPDATE);
 
 struct req_format RQF_LDLM_ENQUEUE =
         DEFINE_REQ_FMT0("LDLM_ENQUEUE",
@@ -1361,10 +1502,10 @@ struct req_format RQF_LDLM_GL_CALLBACK =
                         ldlm_gl_callback_server);
 EXPORT_SYMBOL(RQF_LDLM_GL_CALLBACK);
 
-struct req_format RQF_LDLM_GL_DESC_CALLBACK =
+struct req_format RQF_LDLM_GL_CALLBACK_DESC =
        DEFINE_REQ_FMT0("LDLM_GL_CALLBACK", ldlm_gl_callback_desc_client,
                        ldlm_gl_callback_server);
-EXPORT_SYMBOL(RQF_LDLM_GL_DESC_CALLBACK);
+EXPORT_SYMBOL(RQF_LDLM_GL_CALLBACK_DESC);
 
 struct req_format RQF_LDLM_INTENT_BASIC =
        DEFINE_REQ_FMT0("LDLM_INTENT_BASIC",
@@ -1377,7 +1518,7 @@ struct req_format RQF_LDLM_INTENT =
 EXPORT_SYMBOL(RQF_LDLM_INTENT);
 
 struct req_format RQF_LDLM_INTENT_LAYOUT =
-       DEFINE_REQ_FMT0("LDLM_INTENT_LAYOUT ",
+       DEFINE_REQ_FMT0("LDLM_INTENT_LAYOUT",
                        ldlm_intent_layout_client, ldlm_enqueue_lvb_server);
 EXPORT_SYMBOL(RQF_LDLM_INTENT_LAYOUT);
 
@@ -1396,29 +1537,21 @@ struct req_format RQF_LDLM_INTENT_CREATE =
                         ldlm_intent_create_client, ldlm_intent_getattr_server);
 EXPORT_SYMBOL(RQF_LDLM_INTENT_CREATE);
 
-struct req_format RQF_LDLM_INTENT_UNLINK =
-        DEFINE_REQ_FMT0("LDLM_INTENT_UNLINK",
-                        ldlm_intent_unlink_client, ldlm_intent_server);
-EXPORT_SYMBOL(RQF_LDLM_INTENT_UNLINK);
+struct req_format RQF_LDLM_INTENT_GETXATTR =
+       DEFINE_REQ_FMT0("LDLM_INTENT_GETXATTR",
+                       ldlm_intent_getxattr_client,
+                       ldlm_intent_getxattr_server);
+EXPORT_SYMBOL(RQF_LDLM_INTENT_GETXATTR);
 
 struct req_format RQF_MDS_CLOSE =
         DEFINE_REQ_FMT0("MDS_CLOSE",
                         mdt_close_client, mds_last_unlink_server);
 EXPORT_SYMBOL(RQF_MDS_CLOSE);
 
-struct req_format RQF_MDS_PIN =
-        DEFINE_REQ_FMT0("MDS_PIN",
-                        mdt_body_capa, mdt_body_only);
-EXPORT_SYMBOL(RQF_MDS_PIN);
-
-struct req_format RQF_MDS_UNPIN =
-        DEFINE_REQ_FMT0("MDS_UNPIN", mdt_body_only, empty);
-EXPORT_SYMBOL(RQF_MDS_UNPIN);
-
-struct req_format RQF_MDS_DONE_WRITING =
-        DEFINE_REQ_FMT0("MDS_DONE_WRITING",
-                        mdt_close_client, mdt_body_only);
-EXPORT_SYMBOL(RQF_MDS_DONE_WRITING);
+struct req_format RQF_MDS_CLOSE_INTENT =
+       DEFINE_REQ_FMT0("MDS_CLOSE_INTENT",
+                       mdt_close_intent_client, mds_last_unlink_server);
+EXPORT_SYMBOL(RQF_MDS_CLOSE_INTENT);
 
 struct req_format RQF_MDS_READPAGE =
         DEFINE_REQ_FMT0("MDS_READPAGE",
@@ -1438,7 +1571,7 @@ struct req_format RQF_MDS_HSM_CT_REGISTER =
 EXPORT_SYMBOL(RQF_MDS_HSM_CT_REGISTER);
 
 struct req_format RQF_MDS_HSM_CT_UNREGISTER =
-       DEFINE_REQ_FMT0("MDS_HSM_CT_UNREGISTER", empty, empty);
+       DEFINE_REQ_FMT0("MDS_HSM_CT_UNREGISTER", mdt_hsm_ct_unregister, empty);
 EXPORT_SYMBOL(RQF_MDS_HSM_CT_UNREGISTER);
 
 struct req_format RQF_MDS_HSM_STATE_GET =
@@ -1459,27 +1592,11 @@ struct req_format RQF_MDS_SWAP_LAYOUTS =
                        mdt_swap_layouts, empty);
 EXPORT_SYMBOL(RQF_MDS_SWAP_LAYOUTS);
 
-/* This is for split */
-struct req_format RQF_MDS_WRITEPAGE =
-        DEFINE_REQ_FMT0("MDS_WRITEPAGE",
-                        mdt_body_capa, mdt_body_only);
-EXPORT_SYMBOL(RQF_MDS_WRITEPAGE);
-
-struct req_format RQF_MDS_IS_SUBDIR =
-        DEFINE_REQ_FMT0("MDS_IS_SUBDIR",
-                        mdt_body_only, mdt_body_only);
-EXPORT_SYMBOL(RQF_MDS_IS_SUBDIR);
-
 struct req_format RQF_LLOG_ORIGIN_HANDLE_CREATE =
         DEFINE_REQ_FMT0("LLOG_ORIGIN_HANDLE_CREATE",
                         llog_origin_handle_create_client, llogd_body_only);
 EXPORT_SYMBOL(RQF_LLOG_ORIGIN_HANDLE_CREATE);
 
-struct req_format RQF_LLOG_ORIGIN_HANDLE_DESTROY =
-        DEFINE_REQ_FMT0("LLOG_ORIGIN_HANDLE_DESTROY",
-                        llogd_body_only, llogd_body_only);
-EXPORT_SYMBOL(RQF_LLOG_ORIGIN_HANDLE_DESTROY);
-
 struct req_format RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK =
         DEFINE_REQ_FMT0("LLOG_ORIGIN_HANDLE_NEXT_BLOCK",
                         llogd_body_only, llog_origin_handle_next_block_server);
@@ -1495,9 +1612,9 @@ struct req_format RQF_LLOG_ORIGIN_HANDLE_READ_HEADER =
                         llogd_body_only, llog_log_hdr_only);
 EXPORT_SYMBOL(RQF_LLOG_ORIGIN_HANDLE_READ_HEADER);
 
-struct req_format RQF_LLOG_ORIGIN_CONNECT =
-        DEFINE_REQ_FMT0("LLOG_ORIGIN_CONNECT", llogd_conn_body_only, empty);
-EXPORT_SYMBOL(RQF_LLOG_ORIGIN_CONNECT);
+struct req_format RQF_CONNECT =
+       DEFINE_REQ_FMT0("CONNECT", obd_connect_client, obd_connect_server);
+EXPORT_SYMBOL(RQF_CONNECT);
 
 struct req_format RQF_OST_CONNECT =
         DEFINE_REQ_FMT0("OST_CONNECT",
@@ -1549,10 +1666,10 @@ struct req_format RQF_OST_SET_GRANT_INFO =
                          ost_body_only);
 EXPORT_SYMBOL(RQF_OST_SET_GRANT_INFO);
 
-struct req_format RQF_OST_GET_INFO_GENERIC =
+struct req_format RQF_OST_GET_INFO =
         DEFINE_REQ_FMT0("OST_GET_INFO", ost_get_info_generic_client,
                                         ost_get_info_generic_server);
-EXPORT_SYMBOL(RQF_OST_GET_INFO_GENERIC);
+EXPORT_SYMBOL(RQF_OST_GET_INFO);
 
 struct req_format RQF_OST_GET_INFO_LAST_ID =
         DEFINE_REQ_FMT0("OST_GET_INFO_LAST_ID", ost_get_info_generic_client,
@@ -1560,7 +1677,7 @@ struct req_format RQF_OST_GET_INFO_LAST_ID =
 EXPORT_SYMBOL(RQF_OST_GET_INFO_LAST_ID);
 
 struct req_format RQF_OST_GET_INFO_LAST_FID =
-       DEFINE_REQ_FMT0("OST_GET_INFO_LAST_FID", obd_set_info_client,
+       DEFINE_REQ_FMT0("OST_GET_INFO_LAST_FID", ost_get_last_fid_client,
                                                 ost_get_last_fid_server);
 EXPORT_SYMBOL(RQF_OST_GET_INFO_LAST_FID);
 
@@ -1574,7 +1691,17 @@ struct req_format RQF_OST_GET_INFO_FIEMAP =
                                                ost_get_fiemap_server);
 EXPORT_SYMBOL(RQF_OST_GET_INFO_FIEMAP);
 
-#if !defined(__REQ_LAYOUT_USER__)
+struct req_format RQF_LFSCK_NOTIFY =
+       DEFINE_REQ_FMT0("LFSCK_NOTIFY", obd_lfsck_request, empty);
+EXPORT_SYMBOL(RQF_LFSCK_NOTIFY);
+
+struct req_format RQF_LFSCK_QUERY =
+       DEFINE_REQ_FMT0("LFSCK_QUERY", obd_lfsck_request, obd_lfsck_reply);
+EXPORT_SYMBOL(RQF_LFSCK_QUERY);
+
+struct req_format RQF_OST_LADVISE =
+       DEFINE_REQ_FMT0("OST_LADVISE", ost_ladvise, ost_body_only);
+EXPORT_SYMBOL(RQF_OST_LADVISE);
 
 /* Convenience macro */
 #define FMT_FIELD(fmt, i, j) (fmt)->rf_fields[(i)].d[(j)]
@@ -1585,9 +1712,9 @@ EXPORT_SYMBOL(RQF_OST_GET_INFO_FIEMAP);
  */
 int req_layout_init(void)
 {
-        int i;
-        int j;
-        int k;
+       size_t i;
+       size_t j;
+       size_t k;
         struct req_format *rf = NULL;
 
         for (i = 0; i < ARRAY_SIZE(req_formats); ++i) {
@@ -1629,7 +1756,7 @@ EXPORT_SYMBOL(req_layout_fini);
  */
 void req_capsule_init_area(struct req_capsule *pill)
 {
-        int i;
+       size_t i;
 
         for (i = 0; i < ARRAY_SIZE(pill->rc_area[RCL_CLIENT]); i++) {
                 pill->rc_area[RCL_CLIENT][i] = -1;
@@ -1681,9 +1808,8 @@ EXPORT_SYMBOL(req_capsule_fini);
 
 static int __req_format_is_sane(const struct req_format *fmt)
 {
-        return
-                0 <= fmt->rf_idx && fmt->rf_idx < ARRAY_SIZE(req_formats) &&
-                req_formats[fmt->rf_idx] == fmt;
+       return fmt->rf_idx < ARRAY_SIZE(req_formats) &&
+               req_formats[fmt->rf_idx] == fmt;
 }
 
 static struct lustre_msg *__req_msg(const struct req_capsule *pill,
@@ -1716,11 +1842,11 @@ EXPORT_SYMBOL(req_capsule_set);
  * variable-sized fields.  The field sizes come from the declared \a rmf_size
  * field of a \a pill's \a rc_fmt's RMF's.
  */
-int req_capsule_filled_sizes(struct req_capsule *pill,
-                           enum req_location loc)
+size_t req_capsule_filled_sizes(struct req_capsule *pill,
+                               enum req_location loc)
 {
-        const struct req_format *fmt = pill->rc_fmt;
-        int                      i;
+       const struct req_format *fmt = pill->rc_fmt;
+       size_t                   i;
 
         LASSERT(fmt != NULL);
 
@@ -1777,19 +1903,19 @@ EXPORT_SYMBOL(req_capsule_server_pack);
  * Returns the PTLRPC request or reply (\a loc) buffer offset of a \a pill
  * corresponding to the given RMF (\a field).
  */
-static int __req_capsule_offset(const struct req_capsule *pill,
-                                const struct req_msg_field *field,
-                                enum req_location loc)
+__u32 __req_capsule_offset(const struct req_capsule *pill,
+                          const struct req_msg_field *field,
+                          enum req_location loc)
 {
-        int offset;
+       unsigned int offset;
 
-        offset = field->rmf_offset[pill->rc_fmt->rf_idx][loc];
-        LASSERTF(offset > 0, "%s:%s, off=%d, loc=%d\n",
-                            pill->rc_fmt->rf_name,
-                            field->rmf_name, offset, loc);
-        offset --;
+       offset = field->rmf_offset[pill->rc_fmt->rf_idx][loc];
+       LASSERTF(offset > 0, "%s:%s, off=%d, loc=%d\n",
+                            pill->rc_fmt->rf_name,
+                            field->rmf_name, offset, loc);
+       offset--;
 
-        LASSERT(0 <= offset && offset < REQ_MAX_FIELD_NR);
+       LASSERT(offset < REQ_MAX_FIELD_NR);
         return offset;
 }
 
@@ -1819,8 +1945,11 @@ swabber_dumper_helper(struct req_capsule *pill,
         else
                 do_swab = 0;
 
+       if (!field->rmf_dumper)
+               dump = 0;
+
         if (!(field->rmf_flags & RMF_F_STRUCT_ARRAY)) {
-                if (dump && field->rmf_dumper) {
+                if (dump) {
                         CDEBUG(D_RPCTRACE, "Dump of %sfield %s follows\n",
                                do_swab ? "unswabbed " : "", field->rmf_name);
                         field->rmf_dumper(value);
@@ -1829,7 +1958,7 @@ swabber_dumper_helper(struct req_capsule *pill,
                         return;
                 swabber(value);
                 ptlrpc_buf_set_swabbed(pill->rc_req, inout, offset);
-                if (dump) {
+               if (dump) {
                         CDEBUG(D_RPCTRACE, "Dump of swabbed field %s "
                                "follows\n", field->rmf_name);
                         field->rmf_dumper(value);
@@ -1846,7 +1975,7 @@ swabber_dumper_helper(struct req_capsule *pill,
         for (p = value, i = 0, n = len / field->rmf_size;
              i < n;
              i++, p += field->rmf_size) {
-                if (dump && field->rmf_dumper) {
+                if (dump) {
                         CDEBUG(D_RPCTRACE, "Dump of %sarray field %s, "
                                "element %d follows\n",
                                do_swab ? "unswabbed " : "", field->rmf_name, i);
@@ -1855,7 +1984,7 @@ swabber_dumper_helper(struct req_capsule *pill,
                 if (!do_swab)
                         continue;
                 swabber(p);
-                if (dump && field->rmf_dumper) {
+                if (dump) {
                         CDEBUG(D_RPCTRACE, "Dump of swabbed array field %s, "
                                "element %d follows\n", field->rmf_name, i);
                         field->rmf_dumper(value);
@@ -1884,10 +2013,10 @@ static void *__req_capsule_get(struct req_capsule *pill,
         const struct req_format *fmt;
         struct lustre_msg       *msg;
         void                    *value;
-        int                      len;
-        int                      offset;
+       __u32                    len;
+       __u32                    offset;
 
-        void *(*getter)(struct lustre_msg *m, int n, int minlen);
+       void *(*getter)(struct lustre_msg *m, __u32 n, __u32 minlen);
 
         static const char *rcl_names[RCL_NR] = {
                 [RCL_CLIENT] = "client",
@@ -1909,32 +2038,33 @@ static void *__req_capsule_get(struct req_capsule *pill,
         getter = (field->rmf_flags & RMF_F_STRING) ?
                 (typeof(getter))lustre_msg_string : lustre_msg_buf;
 
-        if (field->rmf_flags & RMF_F_STRUCT_ARRAY) {
-                /*
-                 * We've already asserted that field->rmf_size > 0 in
-                 * req_layout_init().
-                 */
-                len = lustre_msg_buflen(msg, offset);
-                if ((len % field->rmf_size) != 0) {
-                        CERROR("%s: array field size mismatch "
-                               "%d modulo %d != 0 (%d)\n",
-                               field->rmf_name, len, field->rmf_size, loc);
-                        return NULL;
-                }
+       if (field->rmf_flags & (RMF_F_STRUCT_ARRAY|RMF_F_NO_SIZE_CHECK)) {
+               /*
+                * We've already asserted that field->rmf_size > 0 in
+                * req_layout_init().
+                */
+               len = lustre_msg_buflen(msg, offset);
+               if (!(field->rmf_flags & RMF_F_NO_SIZE_CHECK) &&
+                   (len % field->rmf_size) != 0) {
+                       CERROR("%s: array field size mismatch "
+                               "%d modulo %u != 0 (%d)\n",
+                               field->rmf_name, len, field->rmf_size, loc);
+                       return NULL;
+               }
         } else if (pill->rc_area[loc][offset] != -1) {
                 len = pill->rc_area[loc][offset];
         } else {
-                len = max(field->rmf_size, 0);
+               len = max_t(typeof(field->rmf_size), field->rmf_size, 0);
         }
         value = getter(msg, offset, len);
 
         if (value == NULL) {
                 DEBUG_REQ(D_ERROR, pill->rc_req,
-                          "Wrong buffer for field `%s' (%d of %d) "
-                          "in format `%s': %d vs. %d (%s)\n",
-                          field->rmf_name, offset, lustre_msg_bufcount(msg),
-                          fmt->rf_name, lustre_msg_buflen(msg, offset), len,
-                          rcl_names[loc]);
+                         "Wrong buffer for field `%s' (%u of %u) "
+                         "in format `%s': %u vs. %u (%s)\n",
+                         field->rmf_name, offset, lustre_msg_bufcount(msg),
+                         fmt->rf_name, lustre_msg_buflen(msg, offset), len,
+                         rcl_names[loc]);
         } else {
                 swabber_dumper_helper(pill, field, loc, offset, value, len,
                                       dump, swabber);
@@ -1948,10 +2078,10 @@ static void *__req_capsule_get(struct req_capsule *pill,
  */
 void __req_capsule_dump(struct req_capsule *pill, enum req_location loc)
 {
-        const struct    req_format *fmt;
-        const struct    req_msg_field *field;
-        int             len;
-        int             i;
+       const struct    req_format *fmt;
+       const struct    req_msg_field *field;
+       __u32           len;
+       size_t          i;
 
         fmt = pill->rc_fmt;
 
@@ -1964,8 +2094,8 @@ void __req_capsule_dump(struct req_capsule *pill, enum req_location loc)
                          * have a specific dumper
                          */
                         len = req_capsule_get_size(pill, field, loc);
-                        CDEBUG(D_RPCTRACE, "Field %s has no dumper function;"
-                               "field size is %d\n", field->rmf_name, len);
+                       CDEBUG(D_RPCTRACE, "Field %s has no dumper function;"
+                               "field size is %u\n", field->rmf_name, len);
                 } else {
                         /* It's the dumping side-effect that we're interested in */
                         (void) __req_capsule_get(pill, field, loc, NULL, 1);
@@ -2025,8 +2155,8 @@ EXPORT_SYMBOL(req_capsule_client_swab_get);
  * returned.
  */
 void *req_capsule_client_sized_get(struct req_capsule *pill,
-                                   const struct req_msg_field *field,
-                                   int len)
+                                  const struct req_msg_field *field,
+                                  __u32 len)
 {
         req_capsule_set_size(pill, field, RCL_CLIENT, len);
         return __req_capsule_get(pill, field, RCL_CLIENT, NULL, 0);
@@ -2066,8 +2196,8 @@ EXPORT_SYMBOL(req_capsule_server_swab_get);
  * returned.
  */
 void *req_capsule_server_sized_get(struct req_capsule *pill,
-                                   const struct req_msg_field *field,
-                                   int len)
+                                  const struct req_msg_field *field,
+                                  __u32 len)
 {
         req_capsule_set_size(pill, field, RCL_SERVER, len);
         return __req_capsule_get(pill, field, RCL_SERVER, NULL, 0);
@@ -2076,7 +2206,7 @@ EXPORT_SYMBOL(req_capsule_server_sized_get);
 
 void *req_capsule_server_sized_swab_get(struct req_capsule *pill,
                                        const struct req_msg_field *field,
-                                       int len, void *swabber)
+                                       __u32 len, void *swabber)
 {
        req_capsule_set_size(pill, field, RCL_SERVER, len);
        return __req_capsule_get(pill, field, RCL_SERVER, swabber, 0);
@@ -2106,30 +2236,31 @@ EXPORT_SYMBOL(req_capsule_other_get);
  * request or reply.
  */
 void req_capsule_set_size(struct req_capsule *pill,
-                          const struct req_msg_field *field,
-                          enum req_location loc, int size)
+                         const struct req_msg_field *field,
+                         enum req_location loc, __u32 size)
 {
-        LASSERT(loc == RCL_SERVER || loc == RCL_CLIENT);
-
-        if ((size != field->rmf_size) &&
-            (field->rmf_size != -1) &&
-            !(field->rmf_flags & RMF_F_NO_SIZE_CHECK) &&
-            (size > 0)) {
-                if ((field->rmf_flags & RMF_F_STRUCT_ARRAY) &&
-                    (size % field->rmf_size != 0)) {
-                        CERROR("%s: array field size mismatch "
-                               "%d %% %d != 0 (%d)\n",
-                               field->rmf_name, size, field->rmf_size, loc);
-                        LBUG();
-                } else if (!(field->rmf_flags & RMF_F_STRUCT_ARRAY) &&
-                    size < field->rmf_size) {
-                        CERROR("%s: field size mismatch %d != %d (%d)\n",
-                               field->rmf_name, size, field->rmf_size, loc);
-                        LBUG();
-                }
-        }
-
-        pill->rc_area[loc][__req_capsule_offset(pill, field, loc)] = size;
+       LASSERT(loc == RCL_SERVER || loc == RCL_CLIENT);
+
+       if ((size != (__u32)field->rmf_size) &&
+           (field->rmf_size != -1) &&
+           !(field->rmf_flags & RMF_F_NO_SIZE_CHECK) &&
+           (size > 0)) {
+               __u32 rmf_size = (__u32)field->rmf_size;
+               if ((field->rmf_flags & RMF_F_STRUCT_ARRAY) &&
+                   (size % rmf_size != 0)) {
+                       CERROR("%s: array field size mismatch "
+                               "%u %% %u != 0 (%d)\n",
+                               field->rmf_name, size, rmf_size, loc);
+                       LBUG();
+               } else if (!(field->rmf_flags & RMF_F_STRUCT_ARRAY) &&
+                          size < rmf_size) {
+                       CERROR("%s: field size mismatch %u != %u (%d)\n",
+                               field->rmf_name, size, rmf_size, loc);
+                       LBUG();
+               }
+       }
+
+       pill->rc_area[loc][__req_capsule_offset(pill, field, loc)] = size;
 }
 EXPORT_SYMBOL(req_capsule_set_size);
 
@@ -2141,7 +2272,7 @@ EXPORT_SYMBOL(req_capsule_set_size);
  * actually sets the size in pill.rc_area[loc][offset], but this function
  * returns the message buflen[offset], maybe we should use another name.
  */
-int req_capsule_get_size(const struct req_capsule *pill,
+__u32 req_capsule_get_size(const struct req_capsule *pill,
                          const struct req_msg_field *field,
                          enum req_location loc)
 {
@@ -2159,7 +2290,7 @@ EXPORT_SYMBOL(req_capsule_get_size);
  *
  * See also req_capsule_set_size().
  */
-int req_capsule_msg_size(struct req_capsule *pill, enum req_location loc)
+__u32 req_capsule_msg_size(struct req_capsule *pill, enum req_location loc)
 {
         return lustre_msg_size(pill->rc_req->rq_import->imp_msg_magic,
                                pill->rc_fmt->rf_fields[loc].nr,
@@ -2174,10 +2305,11 @@ int req_capsule_msg_size(struct req_capsule *pill, enum req_location loc)
  * This function should not be used for formats which contain variable size
  * fields.
  */
-int req_capsule_fmt_size(__u32 magic, const struct req_format *fmt,
+__u32 req_capsule_fmt_size(__u32 magic, const struct req_format *fmt,
                          enum req_location loc)
 {
-        int size, i = 0;
+       __u32 size;
+       size_t i = 0;
 
         /*
          * This function should probably LASSERT() that fmt has no fields with
@@ -2187,8 +2319,8 @@ int req_capsule_fmt_size(__u32 magic, const struct req_format *fmt,
          * we do.
          */
         size = lustre_msg_hdr_size(magic, fmt->rf_fields[loc].nr);
-        if (size < 0)
-                return size;
+       if (size == 0)
+               return size;
 
         for (; i < fmt->rf_fields[loc].nr; ++i)
                 if (fmt->rf_fields[loc].d[i]->rmf_size != -1)
@@ -2218,8 +2350,8 @@ int req_capsule_fmt_size(__u32 magic, const struct req_format *fmt,
  */
 void req_capsule_extend(struct req_capsule *pill, const struct req_format *fmt)
 {
-        int i;
-        int j;
+       int i;
+       size_t j;
 
         const struct req_format *old;
 
@@ -2277,7 +2409,7 @@ int req_capsule_field_present(const struct req_capsule *pill,
                               const struct req_msg_field *field,
                               enum req_location loc)
 {
-        int offset;
+       __u32 offset;
 
         LASSERT(loc == RCL_SERVER || loc == RCL_CLIENT);
         LASSERT(req_capsule_has_field(pill, field, loc));
@@ -2294,13 +2426,13 @@ EXPORT_SYMBOL(req_capsule_field_present);
  * This is not the opposite of req_capsule_extend().
  */
 void req_capsule_shrink(struct req_capsule *pill,
-                        const struct req_msg_field *field,
-                        unsigned int newlen,
-                        enum req_location loc)
+                       const struct req_msg_field *field,
+                       __u32 newlen,
+                       enum req_location loc)
 {
         const struct req_format *fmt;
         struct lustre_msg       *msg;
-        int                      len;
+       __u32                    len;
         int                      offset;
 
         fmt = pill->rc_fmt;
@@ -2313,7 +2445,7 @@ void req_capsule_shrink(struct req_capsule *pill,
 
         msg = __req_msg(pill, loc);
         len = lustre_msg_buflen(msg, offset);
-        LASSERTF(newlen <= len, "%s:%s, oldlen=%d, newlen=%d\n",
+       LASSERTF(newlen <= len, "%s:%s, oldlen=%u, newlen=%u\n",
                                 fmt->rf_name, field->rmf_name, len, newlen);
 
         if (loc == RCL_CLIENT)
@@ -2326,12 +2458,13 @@ void req_capsule_shrink(struct req_capsule *pill,
 EXPORT_SYMBOL(req_capsule_shrink);
 
 int req_capsule_server_grow(struct req_capsule *pill,
-                            const struct req_msg_field *field,
-                            unsigned int newlen)
+                           const struct req_msg_field *field,
+                           __u32 newlen)
 {
         struct ptlrpc_reply_state *rs = pill->rc_req->rq_reply_state, *nrs;
         char *from, *to;
-        int offset, len, rc;
+       int rc;
+       __u32 offset, len;
 
         LASSERT(pill->rc_fmt != NULL);
         LASSERT(__req_format_is_sane(pill->rc_fmt));
@@ -2340,7 +2473,7 @@ int req_capsule_server_grow(struct req_capsule *pill,
 
         len = req_capsule_get_size(pill, field, RCL_SERVER);
         offset = __req_capsule_offset(pill, field, RCL_SERVER);
-        if (pill->rc_req->rq_repbuf_len >=
+       if ((__u32)pill->rc_req->rq_repbuf_len >=
             lustre_packed_msg_size(pill->rc_req->rq_repmsg) - len + newlen)
                 CERROR("Inplace repack might be done\n");
 
@@ -2374,6 +2507,7 @@ int req_capsule_server_grow(struct req_capsule *pill,
 
                 nrs->rs_difficult = 1;
                 nrs->rs_no_ack = rs->rs_no_ack;
+               nrs->rs_convert_lock = rs->rs_convert_lock;
                 for (i = 0; i < rs->rs_nlocks; i++) {
                         nrs->rs_locks[i] = rs->rs_locks[i];
                         nrs->rs_modes[i] = rs->rs_modes[i];
@@ -2387,5 +2521,3 @@ int req_capsule_server_grow(struct req_capsule *pill,
         return 0;
 }
 EXPORT_SYMBOL(req_capsule_server_grow);
-/* __REQ_LAYOUT_USER__ */
-#endif