コード例 #1
0
ファイル: mdc_lib.c プロジェクト: Zealsathish/lustre
void mdc_setattr_pack(struct ptlrpc_request *req, struct md_op_data *op_data,
		      void *ea, size_t ealen)
{
        struct mdt_rec_setattr *rec;
        struct lov_user_md *lum = NULL;

        CLASSERT(sizeof(struct mdt_rec_reint) ==sizeof(struct mdt_rec_setattr));
        rec = req_capsule_client_get(&req->rq_pill, &RMF_REC_REINT);
        mdc_setattr_pack_rec(rec, op_data);

        mdc_pack_capa(req, &RMF_CAPA1, op_data->op_capa1);

        if (ealen == 0)
                return;

        lum = req_capsule_client_get(&req->rq_pill, &RMF_EADATA);
        if (ea == NULL) { /* Remove LOV EA */
		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);
        } else {
                memcpy(lum, ea, ealen);
        }
}
コード例 #2
0
ファイル: mdc_lib.c プロジェクト: 383530895/linux
void mdc_setattr_pack(struct ptlrpc_request *req, struct md_op_data *op_data,
		      void *ea, int ealen, void *ea2, int ea2len)
{
	struct mdt_rec_setattr *rec;
	struct mdt_ioepoch *epoch;
	struct lov_user_md *lum = NULL;

	CLASSERT(sizeof(struct mdt_rec_reint) ==
					sizeof(struct mdt_rec_setattr));
	rec = req_capsule_client_get(&req->rq_pill, &RMF_REC_REINT);
	mdc_setattr_pack_rec(rec, op_data);

	mdc_pack_capa(req, &RMF_CAPA1, op_data->op_capa1);

	if (op_data->op_flags & (MF_SOM_CHANGE | MF_EPOCH_OPEN)) {
		epoch = req_capsule_client_get(&req->rq_pill, &RMF_MDT_EPOCH);
		mdc_ioepoch_pack(epoch, op_data);
	}

	if (ealen == 0)
		return;

	lum = req_capsule_client_get(&req->rq_pill, &RMF_EADATA);
	if (ea == NULL) { /* Remove LOV EA */
		lum->lmm_magic = LOV_USER_MAGIC_V1;
		lum->lmm_stripe_size = 0;
		lum->lmm_stripe_count = 0;
		lum->lmm_stripe_offset = (typeof(lum->lmm_stripe_offset))(-1);
	} else {
		memcpy(lum, ea, ealen);
	}

	if (ea2len == 0)
		return;

	memcpy(req_capsule_client_get(&req->rq_pill, &RMF_LOGCOOKIES), ea2,
	       ea2len);
}