Whamcloud - gitweb
LU-12275 sec: atomicity of encryption context getting/setting
[fs/lustre-release.git] / lustre / mdc / mdc_lib.c
index 6850357..b44bc0f 100644 (file)
@@ -146,6 +146,23 @@ void mdc_file_secctx_pack(struct ptlrpc_request *req, const char *secctx_name,
        memcpy(buf, secctx, buf_size);
 }
 
+void mdc_file_encctx_pack(struct ptlrpc_request *req,
+                         const void *encctx, size_t encctx_size)
+{
+       void *buf;
+       size_t buf_size;
+
+       if (encctx == NULL)
+               return;
+
+       buf = req_capsule_client_get(&req->rq_pill, &RMF_FILE_ENCCTX);
+       buf_size = req_capsule_get_size(&req->rq_pill, &RMF_FILE_ENCCTX,
+                                       RCL_CLIENT);
+
+       LASSERT(buf_size == encctx_size);
+       memcpy(buf, encctx, buf_size);
+}
+
 void mdc_file_sepol_pack(struct ptlrpc_request *req)
 {
        void *buf;
@@ -216,6 +233,9 @@ void mdc_create_pack(struct ptlrpc_request *req, struct md_op_data *op_data,
                             op_data->op_file_secctx,
                             op_data->op_file_secctx_size);
 
+       mdc_file_encctx_pack(req, op_data->op_file_encctx,
+                            op_data->op_file_encctx_size);
+
        /* pack SELinux policy info if any */
        mdc_file_sepol_pack(req);
 }
@@ -296,6 +316,9 @@ void mdc_open_pack(struct ptlrpc_request *req, struct md_op_data *op_data,
                                     op_data->op_file_secctx,
                                     op_data->op_file_secctx_size);
 
+               mdc_file_encctx_pack(req, op_data->op_file_encctx,
+                                    op_data->op_file_encctx_size);
+
                /* pack SELinux policy info if any */
                mdc_file_sepol_pack(req);
        }