Whamcloud - gitweb
LU-12616 obclass: fix MDS start/stop race
[fs/lustre-release.git] / lustre / mdc / mdc_lib.c
index dcc4250..efa5469 100644 (file)
@@ -304,6 +304,10 @@ void mdc_open_pack(struct ptlrpc_request *req, struct md_op_data *op_data,
                cr_flags |= MDS_OPEN_HAS_EA;
                tmp = req_capsule_client_get(&req->rq_pill, &RMF_EADATA);
                memcpy(tmp, lmm, lmmlen);
+               if (cr_flags & MDS_OPEN_PCC) {
+                       LASSERT(op_data != NULL);
+                       rec->cr_archive_id = op_data->op_archive_id;
+               }
        }
        set_mrc_cr_flags(rec, cr_flags);
 }
@@ -416,7 +420,8 @@ void mdc_setattr_pack(struct ptlrpc_request *req, struct md_op_data *op_data,
                lum->lmm_magic = cpu_to_le32(LOV_USER_MAGIC_V1);
                lum->lmm_stripe_size = 0;
                lum->lmm_stripe_count = 0;
-               lum->lmm_stripe_offset = (typeof(lum->lmm_stripe_offset))(-1);
+               lum->lmm_stripe_offset =
+                 (typeof(lum->lmm_stripe_offset))LOV_OFFSET_DEFAULT;
        } else {
                memcpy(lum, ea, ealen);
        }
@@ -513,6 +518,8 @@ static void mdc_close_intent_pack(struct ptlrpc_request *req,
                        memcpy(req_capsule_client_get(&req->rq_pill, &RMF_U32),
                                op_data->op_data, count * sizeof(__u32));
                }
+       } else if (bias & MDS_PCC_ATTACH) {
+               data->cd_archive_id = op_data->op_archive_id;
        }
 }