Whamcloud - gitweb
LU-1346 libcfs: cleanup libcfs primitive (linux-prim.h)
[fs/lustre-release.git] / lustre / ptlrpc / layout.c
index 393fa7e..c793bb4 100644 (file)
@@ -1,6 +1,4 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
  * GPL HEADER START
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -29,7 +27,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, Whamcloud, Inc.
+ * Copyright (c) 2011, 2013, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -50,9 +48,6 @@
 
 #if !defined(__REQ_LAYOUT_USER__)
 
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
 #define DEBUG_SUBSYSTEM S_RPC
 
 #ifdef __KERNEL__
@@ -74,6 +69,7 @@
 #endif
 /* struct ptlrpc_request, lustre_msg* */
 #include <lustre_req_layout.h>
+#include <lustre_update.h>
 #include <lustre_acl.h>
 #include <lustre_debug.h>
 
@@ -126,14 +122,24 @@ static const struct req_msg_field *quotactl_only[] = {
         &RMF_PTLRPC_BODY,
         &RMF_OBD_QUOTACTL
 };
-static const struct req_msg_field *quota_adjust_qunit_only[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_QUOTA_ADJUST_QUNIT
+
+static const struct req_msg_field *quota_body_only[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_QUOTA_BODY
 };
 
-static const struct req_msg_field *qunit_data_only[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_QUNIT_DATA
+static const struct req_msg_field *ldlm_intent_quota_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REQ,
+       &RMF_LDLM_INTENT,
+       &RMF_QUOTA_BODY
+};
+
+static const struct req_msg_field *ldlm_intent_quota_server[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REP,
+       &RMF_DLM_LVB,
+       &RMF_QUOTA_BODY
 };
 
 static const struct req_msg_field *mdt_close_client[] = {
@@ -143,6 +149,14 @@ static const struct req_msg_field *mdt_close_client[] = {
         &RMF_CAPA1
 };
 
+static const struct req_msg_field *mdt_release_close_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_MDT_EPOCH,
+       &RMF_REC_REINT,
+       &RMF_CAPA1,
+       &RMF_CLOSE_DATA
+};
+
 static const struct req_msg_field *obd_statfs_server[] = {
         &RMF_PTLRPC_BODY,
         &RMF_OBD_STATFS
@@ -285,7 +299,17 @@ 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 *mdt_swap_layouts[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
+       &RMF_SWAP_LAYOUTS,
+       &RMF_CAPA1,
+       &RMF_CAPA2,
+       &RMF_DLM_REQ
 };
 
 static const struct req_msg_field *obd_connect_client[] = {
@@ -346,11 +370,23 @@ static const struct req_msg_field *ldlm_cp_callback_client[] = {
         &RMF_DLM_LVB
 };
 
+static const struct req_msg_field *ldlm_gl_callback_desc_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REQ,
+       &RMF_DLM_GL_DESC
+};
+
 static const struct req_msg_field *ldlm_gl_callback_server[] = {
         &RMF_PTLRPC_BODY,
         &RMF_DLM_LVB
 };
 
+static const struct req_msg_field *ldlm_intent_basic_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REQ,
+       &RMF_LDLM_INTENT,
+};
+
 static const struct req_msg_field *ldlm_intent_client[] = {
         &RMF_PTLRPC_BODY,
         &RMF_DLM_REQ,
@@ -366,6 +402,13 @@ static const struct req_msg_field *ldlm_intent_server[] = {
         &RMF_ACL
 };
 
+static const struct req_msg_field *ldlm_intent_layout_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_DLM_REQ,
+       &RMF_LDLM_INTENT,
+       &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,
@@ -424,6 +467,25 @@ static const struct req_msg_field *ldlm_intent_unlink_client[] = {
         &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_getxattr_client[] = {
         &RMF_PTLRPC_BODY,
         &RMF_MDT_BODY,
@@ -456,15 +518,14 @@ static const struct req_msg_field *mds_setattr_server[] = {
         &RMF_CAPA2
 };
 
-static const struct req_msg_field *llog_catinfo_client[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_NAME,
-        &RMF_STRING
+static const struct req_msg_field *mds_update_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_UPDATE,
 };
 
-static const struct req_msg_field *llog_catinfo_server[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_STRING
+static const struct req_msg_field *mds_update_server[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_UPDATE_REPLY,
 };
 
 static const struct req_msg_field *llog_origin_handle_create_client[] = {
@@ -494,6 +555,16 @@ static const struct req_msg_field *llog_origin_handle_next_block_server[] = {
         &RMF_EADATA
 };
 
+static const struct req_msg_field *obd_idx_read_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_IDX_INFO
+};
+
+static const struct req_msg_field *obd_idx_read_server[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_IDX_INFO
+};
+
 static const struct req_msg_field *ost_body_only[] = {
         &RMF_PTLRPC_BODY,
         &RMF_OST_BODY
@@ -547,6 +618,11 @@ static const struct req_msg_field *ost_get_last_id_server[] = {
         &RMF_OBD_ID
 };
 
+static const struct req_msg_field *ost_get_last_fid_server[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_FID,
+};
+
 static const struct req_msg_field *ost_get_fiemap_client[] = {
         &RMF_PTLRPC_BODY,
         &RMF_FIEMAP_KEY,
@@ -558,9 +634,54 @@ static const struct req_msg_field *ost_get_fiemap_server[] = {
         &RMF_FIEMAP_VAL
 };
 
+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,
+};
+
+static const struct req_msg_field *mdt_hsm_state_set[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
+       &RMF_CAPA1,
+       &RMF_HSM_STATE_SET,
+};
+
+static const struct req_msg_field *mdt_hsm_request[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_MDT_BODY,
+       &RMF_MDS_HSM_REQUEST,
+       &RMF_MDS_HSM_USER_ITEM,
+       &RMF_GENERIC_DATA,
+};
+
 static struct req_format *req_formats[] = {
         &RQF_OBD_PING,
         &RQF_OBD_SET_INFO,
+       &RQF_OBD_IDX_READ,
         &RQF_SEC_CTX,
         &RQF_MGS_TARGET_REG,
         &RQF_MGS_SET_INFO,
@@ -577,6 +698,7 @@ static struct req_format *req_formats[] = {
         &RQF_MDS_GETXATTR,
         &RQF_MDS_SYNC,
         &RQF_MDS_CLOSE,
+       &RQF_MDS_RELEASE_CLOSE,
         &RQF_MDS_PIN,
         &RQF_MDS_UNPIN,
         &RQF_MDS_READPAGE,
@@ -596,13 +718,20 @@ static struct req_format *req_formats[] = {
         &RQF_MDS_REINT_SETXATTR,
         &RQF_MDS_QUOTACHECK,
         &RQF_MDS_QUOTACTL,
-        &RQF_MDS_QUOTA_DQACQ,
-        &RQF_QC_CALLBACK,
+       &RQF_MDS_HSM_PROGRESS,
+       &RQF_MDS_HSM_CT_REGISTER,
+       &RQF_MDS_HSM_CT_UNREGISTER,
+       &RQF_MDS_HSM_STATE_GET,
+       &RQF_MDS_HSM_STATE_SET,
+       &RQF_MDS_HSM_ACTION,
+       &RQF_MDS_HSM_REQUEST,
+       &RQF_MDS_SWAP_LAYOUTS,
+       &RQF_UPDATE_OBJ,
+       &RQF_QC_CALLBACK,
         &RQF_OST_CONNECT,
         &RQF_OST_DISCONNECT,
         &RQF_OST_QUOTACHECK,
         &RQF_OST_QUOTACTL,
-        &RQF_OST_QUOTA_ADJUST_QUNIT,
         &RQF_OST_GETATTR,
         &RQF_OST_SETATTR,
         &RQF_OST_CREATE,
@@ -615,6 +744,8 @@ static struct req_format *req_formats[] = {
         &RQF_OST_SET_GRANT_INFO,
         &RQF_OST_GET_INFO_GENERIC,
         &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,
@@ -624,19 +755,25 @@ static struct req_format *req_formats[] = {
         &RQF_LDLM_CP_CALLBACK,
         &RQF_LDLM_BL_CALLBACK,
         &RQF_LDLM_GL_CALLBACK,
+       &RQF_LDLM_GL_DESC_CALLBACK,
         &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_GETXATTR,
+       &RQF_LDLM_INTENT_QUOTA,
+       &RQF_QUOTA_DQACQ,
         &RQF_LOG_CANCEL,
-        &RQF_LLOG_CATINFO,
         &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_LLOG_ORIGIN_CONNECT,
+       &RQF_CONNECT,
 };
 
 struct req_msg_field {
@@ -767,16 +904,10 @@ struct req_msg_field RMF_OBD_QUOTACTL =
                     lustre_swab_obd_quotactl, NULL);
 EXPORT_SYMBOL(RMF_OBD_QUOTACTL);
 
-struct req_msg_field RMF_QUOTA_ADJUST_QUNIT =
-        DEFINE_MSGF("quota_adjust_qunit", 0,
-                    sizeof(struct quota_adjust_qunit),
-                    lustre_swab_quota_adjust_qunit, NULL);
-EXPORT_SYMBOL(RMF_QUOTA_ADJUST_QUNIT);
-
-struct req_msg_field RMF_QUNIT_DATA =
-        DEFINE_MSGF("qunit_data", 0,
-                    sizeof(struct qunit_data), lustre_swab_qdata, NULL);
-EXPORT_SYMBOL(RMF_QUNIT_DATA);
+struct req_msg_field RMF_QUOTA_BODY =
+       DEFINE_MSGF("quota_body", 0,
+                   sizeof(struct quota_body), lustre_swab_quota_body, NULL);
+EXPORT_SYMBOL(RMF_QUOTA_BODY);
 
 struct req_msg_field RMF_MDT_EPOCH =
         DEFINE_MSGF("mdt_ioepoch", 0,
@@ -788,6 +919,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);
@@ -848,7 +984,7 @@ 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, 9, 0, 0)
+#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.
@@ -880,10 +1016,14 @@ struct req_msg_field RMF_LDLM_INTENT =
 EXPORT_SYMBOL(RMF_LDLM_INTENT);
 
 struct req_msg_field RMF_DLM_LVB =
-        DEFINE_MSGF("dlm_lvb", 0, sizeof(struct ost_lvb), lustre_swab_ost_lvb,
-        NULL);
+       DEFINE_MSGF("dlm_lvb", 0, -1, NULL, NULL);
 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);
+EXPORT_SYMBOL(RMF_DLM_GL_DESC);
+
 struct req_msg_field RMF_MDT_MD =
         DEFINE_MSGF("mdt_md", RMF_F_NO_SIZE_CHECK, MIN_MD_SIZE, NULL, NULL);
 EXPORT_SYMBOL(RMF_MDT_MD);
@@ -898,6 +1038,9 @@ struct req_msg_field RMF_EADATA = DEFINE_MSGF("eadata", 0, -1,
                                                     NULL, NULL);
 EXPORT_SYMBOL(RMF_EADATA);
 
+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", RMF_F_NO_SIZE_CHECK,
                     LUSTRE_POSIX_ACL_MAX_SIZE, NULL, NULL);
@@ -919,6 +1062,12 @@ struct req_msg_field RMF_CAPA2 =
                     lustre_swab_lustre_capa, NULL);
 EXPORT_SYMBOL(RMF_CAPA2);
 
+struct req_msg_field RMF_LAYOUT_INTENT =
+       DEFINE_MSGF("layout_intent", 0,
+                   sizeof(struct layout_intent), lustre_swab_layout_intent,
+                   NULL);
+EXPORT_SYMBOL(RMF_LAYOUT_INTENT);
+
 /*
  * OST request field.
  */
@@ -943,11 +1092,26 @@ struct req_msg_field RMF_RCS =
                     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);
 EXPORT_SYMBOL(RMF_OBD_ID);
 
+struct req_msg_field RMF_FID =
+       DEFINE_MSGF("fid", 0,
+                   sizeof(struct lu_fid), lustre_swab_lu_fid, NULL);
+EXPORT_SYMBOL(RMF_FID);
+
+struct req_msg_field RMF_OST_ID =
+       DEFINE_MSGF("ost_id", 0,
+                   sizeof(struct ost_id), lustre_swab_ost_id, NULL);
+EXPORT_SYMBOL(RMF_OST_ID);
+
 struct req_msg_field RMF_FIEMAP_KEY =
         DEFINE_MSGF("fiemap", 0, sizeof(struct ll_fiemap_info_key),
                     lustre_swab_fiemap, NULL);
@@ -957,6 +1121,59 @@ struct req_msg_field RMF_FIEMAP_VAL =
         DEFINE_MSGF("fiemap", 0, -1, lustre_swab_fiemap, NULL);
 EXPORT_SYMBOL(RMF_FIEMAP_VAL);
 
+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_HSM_USER_STATE =
+       DEFINE_MSGF("hsm_user_state", 0, sizeof(struct hsm_user_state),
+                   lustre_swab_hsm_user_state, NULL);
+EXPORT_SYMBOL(RMF_HSM_USER_STATE);
+
+struct req_msg_field RMF_HSM_STATE_SET =
+       DEFINE_MSGF("hsm_state_set", 0, sizeof(struct hsm_state_set),
+                   lustre_swab_hsm_state_set, NULL);
+EXPORT_SYMBOL(RMF_HSM_STATE_SET);
+
+struct req_msg_field RMF_MDS_HSM_PROGRESS =
+       DEFINE_MSGF("hsm_progress", 0, sizeof(struct hsm_progress_kernel),
+                   lustre_swab_hsm_progress_kernel, NULL);
+EXPORT_SYMBOL(RMF_MDS_HSM_PROGRESS);
+
+struct req_msg_field RMF_MDS_HSM_CURRENT_ACTION =
+       DEFINE_MSGF("hsm_current_action", 0, sizeof(struct hsm_current_action),
+                   lustre_swab_hsm_current_action, NULL);
+EXPORT_SYMBOL(RMF_MDS_HSM_CURRENT_ACTION);
+
+struct req_msg_field RMF_MDS_HSM_USER_ITEM =
+       DEFINE_MSGF("hsm_user_item", RMF_F_STRUCT_ARRAY,
+                   sizeof(struct hsm_user_item), lustre_swab_hsm_user_item,
+                   NULL);
+EXPORT_SYMBOL(RMF_MDS_HSM_USER_ITEM);
+
+struct req_msg_field RMF_MDS_HSM_ARCHIVE =
+       DEFINE_MSGF("hsm_archive", 0,
+                   sizeof(__u32), lustre_swab_generic_32s, NULL);
+EXPORT_SYMBOL(RMF_MDS_HSM_ARCHIVE);
+
+struct req_msg_field RMF_MDS_HSM_REQUEST =
+       DEFINE_MSGF("hsm_request", 0, sizeof(struct 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_UPDATE_REPLY = DEFINE_MSGF("update_reply", 0, -1,
+                                               lustre_swab_update_reply_buf,
+                                                   NULL);
+EXPORT_SYMBOL(RMF_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);
 /*
  * Request formats.
  */
@@ -995,6 +1212,12 @@ struct req_format RQF_OBD_SET_INFO =
         DEFINE_REQ_FMT0("OBD_SET_INFO", obd_set_info_client, empty);
 EXPORT_SYMBOL(RQF_OBD_SET_INFO);
 
+/* Read index file through the network */
+struct req_format RQF_OBD_IDX_READ =
+       DEFINE_REQ_FMT0("OBD_IDX_READ",
+                       obd_idx_read_client, obd_idx_read_server);
+EXPORT_SYMBOL(RQF_OBD_IDX_READ);
+
 struct req_format RQF_SEC_CTX =
         DEFINE_REQ_FMT0("SEC_CTX", empty, empty);
 EXPORT_SYMBOL(RQF_SEC_CTX);
@@ -1042,18 +1265,19 @@ struct req_format RQF_OST_QUOTACTL =
         DEFINE_REQ_FMT0("OST_QUOTACTL", quotactl_only, quotactl_only);
 EXPORT_SYMBOL(RQF_OST_QUOTACTL);
 
-struct req_format RQF_OST_QUOTA_ADJUST_QUNIT =
-        DEFINE_REQ_FMT0("OST_QUOTA_ADJUST_QUNIT", quota_adjust_qunit_only,
-                        quota_adjust_qunit_only);
-EXPORT_SYMBOL(RQF_OST_QUOTA_ADJUST_QUNIT);
-
 struct req_format RQF_QC_CALLBACK =
         DEFINE_REQ_FMT0("QC_CALLBACK", quotactl_only, empty);
 EXPORT_SYMBOL(RQF_QC_CALLBACK);
 
-struct req_format RQF_MDS_QUOTA_DQACQ =
-        DEFINE_REQ_FMT0("MDS_QUOTA_DQACQ", qunit_data_only, qunit_data_only);
-EXPORT_SYMBOL(RQF_MDS_QUOTA_DQACQ);
+struct req_format RQF_QUOTA_DQACQ =
+       DEFINE_REQ_FMT0("QUOTA_DQACQ", quota_body_only, quota_body_only);
+EXPORT_SYMBOL(RQF_QUOTA_DQACQ);
+
+struct req_format RQF_LDLM_INTENT_QUOTA =
+       DEFINE_REQ_FMT0("LDLM_INTENT_QUOTA",
+                       ldlm_intent_quota_client,
+                       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);
@@ -1149,6 +1373,11 @@ 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,
+                       mds_update_server);
+EXPORT_SYMBOL(RQF_UPDATE_OBJ);
+
 struct req_format RQF_LDLM_ENQUEUE =
         DEFINE_REQ_FMT0("LDLM_ENQUEUE",
                         ldlm_enqueue_client, ldlm_enqueue_lvb_server);
@@ -1185,11 +1414,26 @@ 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 =
+       DEFINE_REQ_FMT0("LDLM_GL_CALLBACK", ldlm_gl_callback_desc_client,
+                       ldlm_gl_callback_server);
+EXPORT_SYMBOL(RQF_LDLM_GL_DESC_CALLBACK);
+
+struct req_format RQF_LDLM_INTENT_BASIC =
+       DEFINE_REQ_FMT0("LDLM_INTENT_BASIC",
+                       ldlm_intent_basic_client, ldlm_enqueue_lvb_server);
+EXPORT_SYMBOL(RQF_LDLM_INTENT_BASIC);
+
 struct req_format RQF_LDLM_INTENT =
         DEFINE_REQ_FMT0("LDLM_INTENT",
                         ldlm_intent_client, ldlm_intent_server);
 EXPORT_SYMBOL(RQF_LDLM_INTENT);
 
+struct req_format RQF_LDLM_INTENT_LAYOUT =
+       DEFINE_REQ_FMT0("LDLM_INTENT_LAYOUT ",
+                       ldlm_intent_layout_client, ldlm_enqueue_lvb_server);
+EXPORT_SYMBOL(RQF_LDLM_INTENT_LAYOUT);
+
 struct req_format RQF_LDLM_INTENT_GETATTR =
         DEFINE_REQ_FMT0("LDLM_INTENT_GETATTR",
                         ldlm_intent_getattr_client, ldlm_intent_getattr_server);
@@ -1210,11 +1454,22 @@ struct req_format RQF_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_RELEASE_CLOSE =
+       DEFINE_REQ_FMT0("MDS_CLOSE",
+                       mdt_release_close_client, mds_last_unlink_server);
+EXPORT_SYMBOL(RQF_MDS_RELEASE_CLOSE);
+
 struct req_format RQF_MDS_PIN =
         DEFINE_REQ_FMT0("MDS_PIN",
                         mdt_body_capa, mdt_body_only);
@@ -1234,6 +1489,40 @@ struct req_format RQF_MDS_READPAGE =
                         mdt_body_capa, mdt_body_only);
 EXPORT_SYMBOL(RQF_MDS_READPAGE);
 
+struct req_format RQF_MDS_HSM_ACTION =
+       DEFINE_REQ_FMT0("MDS_HSM_ACTION", mdt_body_capa, mdt_hsm_action_server);
+EXPORT_SYMBOL(RQF_MDS_HSM_ACTION);
+
+struct req_format RQF_MDS_HSM_PROGRESS =
+       DEFINE_REQ_FMT0("MDS_HSM_PROGRESS", mdt_hsm_progress, empty);
+EXPORT_SYMBOL(RQF_MDS_HSM_PROGRESS);
+
+struct req_format RQF_MDS_HSM_CT_REGISTER =
+       DEFINE_REQ_FMT0("MDS_HSM_CT_REGISTER", mdt_hsm_ct_register, empty);
+EXPORT_SYMBOL(RQF_MDS_HSM_CT_REGISTER);
+
+struct req_format RQF_MDS_HSM_CT_UNREGISTER =
+       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 =
+       DEFINE_REQ_FMT0("MDS_HSM_STATE_GET",
+                       mdt_body_capa, mdt_hsm_state_get_server);
+EXPORT_SYMBOL(RQF_MDS_HSM_STATE_GET);
+
+struct req_format RQF_MDS_HSM_STATE_SET =
+       DEFINE_REQ_FMT0("MDS_HSM_STATE_SET", mdt_hsm_state_set, empty);
+EXPORT_SYMBOL(RQF_MDS_HSM_STATE_SET);
+
+struct req_format RQF_MDS_HSM_REQUEST =
+       DEFINE_REQ_FMT0("MDS_HSM_REQUEST", mdt_hsm_request, empty);
+EXPORT_SYMBOL(RQF_MDS_HSM_REQUEST);
+
+struct req_format RQF_MDS_SWAP_LAYOUTS =
+       DEFINE_REQ_FMT0("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",
@@ -1245,11 +1534,6 @@ struct req_format RQF_MDS_IS_SUBDIR =
                         mdt_body_only, mdt_body_only);
 EXPORT_SYMBOL(RQF_MDS_IS_SUBDIR);
 
-struct req_format RQF_LLOG_CATINFO =
-        DEFINE_REQ_FMT0("LLOG_CATINFO",
-                        llog_catinfo_client, llog_catinfo_server);
-EXPORT_SYMBOL(RQF_LLOG_CATINFO);
-
 struct req_format RQF_LLOG_ORIGIN_HANDLE_CREATE =
         DEFINE_REQ_FMT0("LLOG_ORIGIN_HANDLE_CREATE",
                         llog_origin_handle_create_client, llogd_body_only);
@@ -1279,6 +1563,10 @@ 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",
                         obd_connect_client, obd_connect_server);
@@ -1339,12 +1627,21 @@ struct req_format RQF_OST_GET_INFO_LAST_ID =
                                                 ost_get_last_id_server);
 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,
+                                                ost_get_last_fid_server);
+EXPORT_SYMBOL(RQF_OST_GET_INFO_LAST_FID);
+
+struct req_format RQF_OST_SET_INFO_LAST_FID =
+       DEFINE_REQ_FMT0("OST_SET_INFO_LAST_FID", obd_set_info_client,
+                                                empty);
+EXPORT_SYMBOL(RQF_OST_SET_INFO_LAST_FID);
+
 struct req_format RQF_OST_GET_INFO_FIEMAP =
         DEFINE_REQ_FMT0("OST_GET_INFO_FIEMAP", ost_get_fiemap_client,
                                                ost_get_fiemap_server);
 EXPORT_SYMBOL(RQF_OST_GET_INFO_FIEMAP);
 
-
 #if !defined(__REQ_LAYOUT_USER__)
 
 /* Convenience macro */
@@ -1600,7 +1897,7 @@ swabber_dumper_helper(struct req_capsule *pill,
                         return;
                 swabber(value);
                 ptlrpc_buf_set_swabbed(pill->rc_req, inout, offset);
-                if (dump) {
+               if (dump && field->rmf_dumper) {
                         CDEBUG(D_RPCTRACE, "Dump of swabbed field %s "
                                "follows\n", field->rmf_name);
                         field->rmf_dumper(value);
@@ -1781,8 +2078,8 @@ EXPORT_SYMBOL(req_capsule_client_get);
  * unused too.
  */
 void *req_capsule_client_swab_get(struct req_capsule *pill,
-                                  const struct req_msg_field *field,
-                                  void (*swabber)(void* ))
+                                 const struct req_msg_field *field,
+                                 void *swabber)
 {
         return __req_capsule_get(pill, field, RCL_CLIENT, swabber, 0);
 }
@@ -1845,6 +2142,15 @@ void *req_capsule_server_sized_get(struct req_capsule *pill,
 }
 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)
+{
+       req_capsule_set_size(pill, field, RCL_SERVER, len);
+       return __req_capsule_get(pill, field, RCL_SERVER, swabber, 0);
+}
+EXPORT_SYMBOL(req_capsule_server_sized_swab_get);
+
 /**
  * Returns the buffer of a \a pill corresponding to the given \a field from the
  * request (if the caller is executing on the server-side) or reply (if the
@@ -2087,5 +2393,67 @@ 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)
+{
+        struct ptlrpc_reply_state *rs = pill->rc_req->rq_reply_state, *nrs;
+        char *from, *to;
+        int offset, len, rc;
+
+        LASSERT(pill->rc_fmt != NULL);
+        LASSERT(__req_format_is_sane(pill->rc_fmt));
+        LASSERT(req_capsule_has_field(pill, field, RCL_SERVER));
+        LASSERT(req_capsule_field_present(pill, field, RCL_SERVER));
+
+        len = req_capsule_get_size(pill, field, RCL_SERVER);
+        offset = __req_capsule_offset(pill, field, RCL_SERVER);
+        if (pill->rc_req->rq_repbuf_len >=
+            lustre_packed_msg_size(pill->rc_req->rq_repmsg) - len + newlen)
+                CERROR("Inplace repack might be done\n");
+
+        pill->rc_req->rq_reply_state = NULL;
+        req_capsule_set_size(pill, field, RCL_SERVER, newlen);
+        rc = req_capsule_server_pack(pill);
+        if (rc) {
+                /* put old rs back, the caller will decide what to do */
+                pill->rc_req->rq_reply_state = rs;
+                return rc;
+        }
+        nrs = pill->rc_req->rq_reply_state;
+        /* Now we need only buffers, copy first chunk */
+        to = lustre_msg_buf(nrs->rs_msg, 0, 0);
+        from = lustre_msg_buf(rs->rs_msg, 0, 0);
+        len = (char *)lustre_msg_buf(rs->rs_msg, offset, 0) - from;
+        memcpy(to, from, len);
+        /* check if we have tail and copy it too */
+        if (rs->rs_msg->lm_bufcount > offset + 1) {
+                to = lustre_msg_buf(nrs->rs_msg, offset + 1, 0);
+                from = lustre_msg_buf(rs->rs_msg, offset + 1, 0);
+                offset = rs->rs_msg->lm_bufcount - 1;
+                len = (char *)lustre_msg_buf(rs->rs_msg, offset, 0) +
+                      cfs_size_round(rs->rs_msg->lm_buflens[offset]) - from;
+                memcpy(to, from, len);
+        }
+        /* drop old reply if everything is fine */
+        if (rs->rs_difficult) {
+                /* copy rs data */
+                int i;
+
+                nrs->rs_difficult = 1;
+                nrs->rs_no_ack = rs->rs_no_ack;
+                for (i = 0; i < rs->rs_nlocks; i++) {
+                        nrs->rs_locks[i] = rs->rs_locks[i];
+                        nrs->rs_modes[i] = rs->rs_modes[i];
+                        nrs->rs_nlocks++;
+                }
+                rs->rs_nlocks = 0;
+                rs->rs_difficult = 0;
+                rs->rs_no_ack = 0;
+        }
+        ptlrpc_rs_decref(rs);
+        return 0;
+}
+EXPORT_SYMBOL(req_capsule_server_grow);
 /* __REQ_LAYOUT_USER__ */
 #endif