Whamcloud - gitweb
LU-2744 build: fix 'data race condition' issues
[fs/lustre-release.git] / lustre / mdc / mdc_lib.c
index 13d055e..1e86153 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2011, 2013, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -94,6 +94,21 @@ void mdc_is_subdir_pack(struct ptlrpc_request *req, const struct lu_fid *pfid,
         b->flags = flags;
 }
 
+void mdc_swap_layouts_pack(struct ptlrpc_request *req,
+                          struct md_op_data *op_data)
+{
+       struct mdt_body *b = req_capsule_client_get(&req->rq_pill,
+                                                   &RMF_MDT_BODY);
+
+       __mdc_pack_body(b, op_data->op_suppgids[0]);
+       b->fid1 = op_data->op_fid1;
+       b->fid2 = op_data->op_fid2;
+       b->valid |= OBD_MD_FLID;
+
+       mdc_pack_capa(req, &RMF_CAPA1, op_data->op_capa1);
+       mdc_pack_capa(req, &RMF_CAPA2, op_data->op_capa2);
+}
+
 void mdc_pack_body(struct ptlrpc_request *req,
                    const struct lu_fid *fid, struct obd_capa *oc,
                    __u64 valid, int ea_size, __u32 suppgid, int flags)
@@ -371,14 +386,15 @@ void mdc_setattr_pack(struct ptlrpc_request *req, struct md_op_data *op_data,
 
 void mdc_unlink_pack(struct ptlrpc_request *req, struct md_op_data *op_data)
 {
-        struct mdt_rec_unlink *rec;
-        char *tmp;
-        CLASSERT(sizeof(struct mdt_rec_reint) == sizeof(struct mdt_rec_unlink));
-        rec = req_capsule_client_get(&req->rq_pill, &RMF_REC_REINT);
-        LASSERT (rec != NULL);
+       struct mdt_rec_unlink *rec;
+       char *tmp;
+
+       CLASSERT(sizeof(struct mdt_rec_reint) == sizeof(struct mdt_rec_unlink));
+       rec = req_capsule_client_get(&req->rq_pill, &RMF_REC_REINT);
+       LASSERT(rec != NULL);
 
-        rec->ul_opcode  = REINT_UNLINK;
+       rec->ul_opcode  = op_data->op_cli_flags & CLI_RM_ENTRY ?
+                                       REINT_RMENTRY : REINT_UNLINK;
         rec->ul_fsuid   = op_data->op_fsuid;
         rec->ul_fsgid   = op_data->op_fsgid;
         rec->ul_cap     = op_data->op_cap;