From ff52f8c1736ad7ef2621d23366a1ca6572aa7f22 Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Wed, 12 May 2021 18:41:47 -0600 Subject: [PATCH] LU-14430 mdd: use own rec_hdr for changelog declare Do not use an lu_buf just to declare the changelog record. This only needs llog_rec_hdr to pass in lrh_len, so declaring rec_hdr on the stack avoids the overhead of using the lu_buf. Fixes: f3d03bc38a ("LU-14430 mdd: fix inheritance of big default ACLs") Signed-off-by: Andreas Dilger Change-Id: I7b6f1d761aa98aa6ecb023894bde03dce23ebbe5 Reviewed-on: https://review.whamcloud.com/43683 Reviewed-by: Mike Pershin Tested-by: jenkins Tested-by: Maloo Reviewed-by: Sebastien Buisson Reviewed-by: Oleg Drokin --- lustre/mdd/mdd_dir.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/lustre/mdd/mdd_dir.c b/lustre/mdd/mdd_dir.c index 90b026b..e0c1842 100644 --- a/lustre/mdd/mdd_dir.c +++ b/lustre/mdd/mdd_dir.c @@ -749,25 +749,17 @@ int mdd_declare_changelog_store(const struct lu_env *env, const struct lu_name *sname, struct thandle *handle) { - struct obd_device *obd = mdd2obd_dev(mdd); - struct llog_ctxt *ctxt; - struct llog_changelog_rec *rec; - struct lu_buf *buf; - struct thandle *llog_th; - int reclen; - int rc; + struct obd_device *obd = mdd2obd_dev(mdd); + struct llog_ctxt *ctxt; + struct llog_rec_hdr rec_hdr; + struct thandle *llog_th; + int rc; if (!mdd_changelog_enabled(env, mdd, type)) return 0; - reclen = mdd_llog_record_calc_size(env, tname, sname); - buf = lu_buf_check_and_alloc(&mdd_env_info(env)->mti_chlg_buf, reclen); - if (buf->lb_buf == NULL) - return -ENOMEM; - - rec = buf->lb_buf; - rec->cr_hdr.lrh_len = reclen; - rec->cr_hdr.lrh_type = CHANGELOG_REC; + rec_hdr.lrh_len = mdd_llog_record_calc_size(env, tname, sname); + rec_hdr.lrh_type = CHANGELOG_REC; ctxt = llog_get_context(obd, LLOG_CHANGELOG_ORIG_CTXT); if (ctxt == NULL) @@ -777,7 +769,7 @@ int mdd_declare_changelog_store(const struct lu_env *env, if (IS_ERR(llog_th)) GOTO(out_put, rc = PTR_ERR(llog_th)); - rc = llog_declare_add(env, ctxt->loc_handle, &rec->cr_hdr, llog_th); + rc = llog_declare_add(env, ctxt->loc_handle, &rec_hdr, llog_th); out_put: llog_ctxt_put(ctxt); -- 1.8.3.1