Whamcloud - gitweb
LU-14291 ptlrpc: format UPDATE messages in server-only code
[fs/lustre-release.git] / lustre / ptlrpc / layout.c
index 67a4884..d7a9c28 100644 (file)
@@ -47,7 +47,6 @@
 #include <linux/module.h>
 
 #include <llog_swab.h>
-#include <lustre_debug.h>
 #include <lustre_swab.h>
 #include <obd.h>
 #include <obd_support.h>
@@ -100,8 +99,8 @@ static const struct req_msg_field *mdt_body_capa[] = {
 };
 
 static const struct req_msg_field *quotactl_only[] = {
-        &RMF_PTLRPC_BODY,
-        &RMF_OBD_QUOTACTL
+       &RMF_PTLRPC_BODY,
+       &RMF_OBD_QUOTACTL
 };
 
 static const struct req_msg_field *quota_body_only[] = {
@@ -213,7 +212,8 @@ static const struct req_msg_field *mds_reint_create_acl_client[] = {
        &RMF_DLM_REQ,
        &RMF_FILE_SECCTX_NAME,
        &RMF_FILE_SECCTX,
-       &RMF_SELINUX_POL
+       &RMF_SELINUX_POL,
+       &RMF_FILE_ENCCTX,
 };
 
 static const struct req_msg_field *mds_reint_create_sym_client[] = {
@@ -225,7 +225,8 @@ static const struct req_msg_field *mds_reint_create_sym_client[] = {
        &RMF_DLM_REQ,
        &RMF_FILE_SECCTX_NAME,
        &RMF_FILE_SECCTX,
-       &RMF_SELINUX_POL
+       &RMF_SELINUX_POL,
+       &RMF_FILE_ENCCTX,
 };
 
 static const struct req_msg_field *mds_reint_open_client[] = {
@@ -237,7 +238,8 @@ static const struct req_msg_field *mds_reint_open_client[] = {
        &RMF_EADATA,
        &RMF_FILE_SECCTX_NAME,
        &RMF_FILE_SECCTX,
-       &RMF_SELINUX_POL
+       &RMF_SELINUX_POL,
+       &RMF_FILE_ENCCTX,
 };
 
 static const struct req_msg_field *mds_reint_open_server[] = {
@@ -467,7 +469,8 @@ static const struct req_msg_field *ldlm_intent_open_server[] = {
        &RMF_CAPA1,
        &RMF_CAPA2,
        &RMF_NIOBUF_INLINE,
-       &RMF_FILE_SECCTX
+       &RMF_FILE_SECCTX,
+       &RMF_FILE_ENCCTX,
 };
 
 static const struct req_msg_field *ldlm_intent_getattr_client[] = {
@@ -488,7 +491,8 @@ static const struct req_msg_field *ldlm_intent_getattr_server[] = {
        &RMF_ACL,
        &RMF_CAPA1,
        &RMF_FILE_SECCTX,
-       &RMF_DEFAULT_MDT_MD
+       &RMF_DEFAULT_MDT_MD,
+       &RMF_FILE_ENCCTX,
 };
 
 static const struct req_msg_field *ldlm_intent_create_client[] = {
@@ -501,7 +505,8 @@ static const struct req_msg_field *ldlm_intent_create_client[] = {
        &RMF_EADATA,
        &RMF_FILE_SECCTX_NAME,
        &RMF_FILE_SECCTX,
-       &RMF_SELINUX_POL
+       &RMF_SELINUX_POL,
+       &RMF_FILE_ENCCTX,
 };
 
 static const struct req_msg_field *ldlm_intent_open_client[] = {
@@ -515,7 +520,8 @@ static const struct req_msg_field *ldlm_intent_open_client[] = {
        &RMF_EADATA,
        &RMF_FILE_SECCTX_NAME,
        &RMF_FILE_SECCTX,
-       &RMF_SELINUX_POL
+       &RMF_SELINUX_POL,
+       &RMF_FILE_ENCCTX,
 };
 
 static const struct req_msg_field *ldlm_intent_getxattr_client[] = {
@@ -577,17 +583,6 @@ static const struct req_msg_field *mds_setattr_server[] = {
         &RMF_CAPA2
 };
 
-static const struct req_msg_field *mds_update_client[] = {
-       &RMF_PTLRPC_BODY,
-       &RMF_OUT_UPDATE_HEADER,
-       &RMF_OUT_UPDATE_BUF,
-};
-
-static const struct req_msg_field *mds_update_server[] = {
-       &RMF_PTLRPC_BODY,
-       &RMF_OUT_UPDATE_REPLY,
-};
-
 static const struct req_msg_field *llog_origin_handle_create_client[] = {
        &RMF_PTLRPC_BODY,
        &RMF_LLOGD_BODY,
@@ -809,7 +804,9 @@ static struct req_format *req_formats[] = {
        &RQF_MDS_HSM_REQUEST,
        &RQF_MDS_SWAP_LAYOUTS,
        &RQF_MDS_RMFID,
+#ifdef HAVE_SERVER_SUPPORT
        &RQF_OUT_UPDATE,
+#endif
        &RQF_OST_CONNECT,
        &RQF_OST_DISCONNECT,
        &RQF_OST_QUOTACTL,
@@ -817,6 +814,7 @@ static struct req_format *req_formats[] = {
        &RQF_OST_SETATTR,
        &RQF_OST_CREATE,
        &RQF_OST_PUNCH,
+       &RQF_OST_FALLOCATE,
        &RQF_OST_SYNC,
        &RQF_OST_DESTROY,
        &RQF_OST_BRW_READ,
@@ -829,6 +827,7 @@ static struct req_format *req_formats[] = {
        &RQF_OST_SET_INFO_LAST_FID,
        &RQF_OST_GET_INFO_FIEMAP,
        &RQF_OST_LADVISE,
+       &RQF_OST_SEEK,
        &RQF_LDLM_ENQUEUE,
        &RQF_LDLM_ENQUEUE_LVB,
        &RQF_LDLM_CONVERT,
@@ -877,20 +876,20 @@ struct req_msg_field {
 };
 
 enum rmf_flags {
-        /**
-         * The field is a string, must be NUL-terminated.
-         */
-        RMF_F_STRING = 1 << 0,
-        /**
-         * The field's buffer size need not match the declared \a rmf_size.
-         */
-        RMF_F_NO_SIZE_CHECK = 1 << 1,
-        /**
-         * The field's buffer size must be a whole multiple of the declared \a
-         * rmf_size and the \a rmf_swabber function must work on the declared \a
-         * rmf_size worth of bytes.
-         */
-        RMF_F_STRUCT_ARRAY = 1 << 2
+       /**
+        * The field is a string, must be NUL-terminated.
+        */
+       RMF_F_STRING            = BIT(0),
+       /**
+        * The field's buffer size need not match the declared \a rmf_size.
+        */
+       RMF_F_NO_SIZE_CHECK     = BIT(1),
+       /**
+        * The field's buffer size must be a whole multiple of the declared \a
+        * rmf_size and the \a rmf_swabber function must work on the declared \a
+        * rmf_size worth of bytes.
+        */
+       RMF_F_STRUCT_ARRAY      = BIT(2),
 };
 
 struct req_capsule;
@@ -995,9 +994,10 @@ struct req_msg_field RMF_MDT_BODY =
 EXPORT_SYMBOL(RMF_MDT_BODY);
 
 struct req_msg_field RMF_OBD_QUOTACTL =
-        DEFINE_MSGF("obd_quotactl", 0,
-                    sizeof(struct obd_quotactl),
-                    lustre_swab_obd_quotactl, NULL);
+       DEFINE_MSGFL("obd_quotactl",
+                    0,
+                    sizeof(struct obd_quotactl),
+                    lustre_swab_obd_quotactl, NULL);
 EXPORT_SYMBOL(RMF_OBD_QUOTACTL);
 
 struct req_msg_field RMF_QUOTA_BODY =
@@ -1063,6 +1063,10 @@ struct req_msg_field RMF_FILE_SECCTX =
        DEFINE_MSGF("file_secctx", RMF_F_NO_SIZE_CHECK, -1, NULL, NULL);
 EXPORT_SYMBOL(RMF_FILE_SECCTX);
 
+struct req_msg_field RMF_FILE_ENCCTX =
+       DEFINE_MSGF("file_encctx", RMF_F_NO_SIZE_CHECK, -1, NULL, NULL);
+EXPORT_SYMBOL(RMF_FILE_ENCCTX);
+
 struct req_msg_field RMF_LLOGD_BODY =
         DEFINE_MSGF("llogd_body", 0,
                     sizeof(struct llogd_body), lustre_swab_llogd_body, NULL);
@@ -1272,15 +1276,6 @@ struct req_msg_field RMF_MDS_HSM_REQUEST =
                    lustre_swab_hsm_request, NULL);
 EXPORT_SYMBOL(RMF_MDS_HSM_REQUEST);
 
-struct req_msg_field RMF_OUT_UPDATE = DEFINE_MSGFL("object_update", 0, -1,
-                               lustre_swab_object_update_request, NULL);
-EXPORT_SYMBOL(RMF_OUT_UPDATE);
-
-struct req_msg_field RMF_OUT_UPDATE_REPLY =
-                       DEFINE_MSGFL("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);
@@ -1308,15 +1303,6 @@ struct req_msg_field RMF_OST_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.
  */
@@ -1538,11 +1524,6 @@ struct req_format RQF_MDS_GET_INFO =
                         mds_getinfo_server);
 EXPORT_SYMBOL(RQF_MDS_GET_INFO);
 
-struct req_format RQF_OUT_UPDATE =
-       DEFINE_REQ_FMT0("OUT_UPDATE", mds_update_client,
-                       mds_update_server);
-EXPORT_SYMBOL(RQF_OUT_UPDATE);
-
 struct req_format RQF_LDLM_ENQUEUE =
         DEFINE_REQ_FMT0("LDLM_ENQUEUE",
                         ldlm_enqueue_client, ldlm_enqueue_lvb_server);
@@ -1723,6 +1704,14 @@ struct req_format RQF_OST_PUNCH =
         DEFINE_REQ_FMT0("OST_PUNCH", ost_body_capa, ost_body_only);
 EXPORT_SYMBOL(RQF_OST_PUNCH);
 
+struct req_format RQF_OST_FALLOCATE =
+       DEFINE_REQ_FMT0("OST_FALLOCATE", ost_body_capa, ost_body_only);
+EXPORT_SYMBOL(RQF_OST_FALLOCATE);
+
+struct req_format RQF_OST_SEEK =
+       DEFINE_REQ_FMT0("OST_SEEK", ost_body_only, ost_body_only);
+EXPORT_SYMBOL(RQF_OST_SEEK);
+
 struct req_format RQF_OST_SYNC =
         DEFINE_REQ_FMT0("OST_SYNC", ost_body_capa, ost_body_only);
 EXPORT_SYMBOL(RQF_OST_SYNC);
@@ -2609,8 +2598,9 @@ int req_capsule_server_grow(struct req_capsule *pill,
        /* Now we need only buffers, copy them and grow the needed one */
        to = lustre_msg_buf(nrs->rs_msg, 0, 0);
        from = lustre_msg_buf(rs->rs_msg, 0, 0);
-       len = (char *)rs->rs_msg + lustre_packed_msg_size(rs->rs_msg) - from;
-       memcpy(to, from, len);
+       memcpy(to, from,
+              (char *)rs->rs_msg + lustre_packed_msg_size(rs->rs_msg) - from);
+       lustre_msg_set_buflen(nrs->rs_msg, offset, len);
        pill->rc_req->rq_replen = lustre_grow_msg(nrs->rs_msg, offset, newlen);
 
         if (rs->rs_difficult) {
@@ -2634,10 +2624,44 @@ int req_capsule_server_grow(struct req_capsule *pill,
 }
 EXPORT_SYMBOL(req_capsule_server_grow);
 
+#ifdef HAVE_SERVER_SUPPORT
+static const struct req_msg_field *mds_update_client[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_OUT_UPDATE_HEADER,
+       &RMF_OUT_UPDATE_BUF,
+};
+
+static const struct req_msg_field *mds_update_server[] = {
+       &RMF_PTLRPC_BODY,
+       &RMF_OUT_UPDATE_REPLY,
+};
+
+struct req_msg_field RMF_OUT_UPDATE = DEFINE_MSGFL("object_update", 0, -1,
+                               lustre_swab_object_update_request, NULL);
+EXPORT_SYMBOL(RMF_OUT_UPDATE);
+
+struct req_msg_field RMF_OUT_UPDATE_REPLY =
+                       DEFINE_MSGFL("object_update_reply", 0, -1,
+                                   lustre_swab_object_update_reply, NULL);
+EXPORT_SYMBOL(RMF_OUT_UPDATE_REPLY);
+
+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);
+
+struct req_format RQF_OUT_UPDATE =
+       DEFINE_REQ_FMT0("OUT_UPDATE", mds_update_client,
+                       mds_update_server);
+EXPORT_SYMBOL(RQF_OUT_UPDATE);
+
 int req_check_sepol(struct req_capsule *pill)
 {
        int rc = 0;
-#ifdef HAVE_SERVER_SUPPORT
        struct obd_export *export;
        struct lu_nodemap *nm = NULL;
        const char *sepol = NULL;
@@ -2671,8 +2695,8 @@ nm:
 
        if (!IS_ERR_OR_NULL(nm))
                nodemap_putref(nm);
-#endif
 
        return rc;
 }
 EXPORT_SYMBOL(req_check_sepol);
+#endif