[lustre-devel] [PATCH 06/28] lustre: ldlm: ELC shouldn't wait on lock flush
James Simmons
jsimmons at infradead.org
Sat Oct 20 10:09:33 PDT 2018
> On Sun, Oct 14 2018, James Simmons wrote:
>
> > From: Andriy Skulysh <c17819 at cray.com>
> >
> > The commit 08fd034670b5 ("staging: lustre: ldlm: revert the changes
> > for lock canceling policy") removed the fix for LU-4300 when lru_resize
> > is disabled.
> >
> > Introduce ldlm_cancel_aged_no_wait_policy to be used by ELC.
> >
> > Signed-off-by: Andriy Skulysh <c17819 at cray.com>
> > WC-bug-id: https://jira.whamcloud.com/browse/LU-8578
> > Seagate-bug-id: MRP-3662
> > Reviewed-on: https://review.whamcloud.com/22286
> > Reviewed-by: Vitaly Fertman <c17818 at cray.com>
> > Reviewed-by: Patrick Farrell <paf at cray.com>
> > Reviewed-by: Oleg Drokin <green at whamcloud.com>
> > Signed-off-by: James Simmons <jsimmons at infradead.org>
> > ---
> > drivers/staging/lustre/lustre/ldlm/ldlm_internal.h | 1 -
> > drivers/staging/lustre/lustre/ldlm/ldlm_request.c | 51 +++++++++++++++-------
> > 2 files changed, 35 insertions(+), 17 deletions(-)
> >
> > diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_internal.h b/drivers/staging/lustre/lustre/ldlm/ldlm_internal.h
> > index 1d7c727..709c527 100644
> > --- a/drivers/staging/lustre/lustre/ldlm/ldlm_internal.h
> > +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_internal.h
> > @@ -96,7 +96,6 @@ enum {
> > LDLM_LRU_FLAG_NO_WAIT = BIT(4), /* Cancel locks w/o blocking (neither
> > * sending nor waiting for any rpcs)
> > */
> > - LDLM_LRU_FLAG_LRUR_NO_WAIT = BIT(5), /* LRUR + NO_WAIT */
> > };
> >
> > int ldlm_cancel_lru(struct ldlm_namespace *ns, int nr,
> > diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_request.c b/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
> > index 80260b07..3eb5036 100644
> > --- a/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
> > +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
> > @@ -579,8 +579,8 @@ int ldlm_prep_elc_req(struct obd_export *exp, struct ptlrpc_request *req,
> > req_capsule_filled_sizes(pill, RCL_CLIENT);
> > avail = ldlm_capsule_handles_avail(pill, RCL_CLIENT, canceloff);
> >
> > - flags = ns_connect_lru_resize(ns) ?
> > - LDLM_LRU_FLAG_LRUR_NO_WAIT : LDLM_LRU_FLAG_AGED;
> > + flags = LDLM_LRU_FLAG_NO_WAIT | ns_connect_lru_resize(ns) ?
> > + LDLM_LRU_FLAG_LRUR : LDLM_LRU_FLAG_AGED;
> > to_free = !ns_connect_lru_resize(ns) &&
> > opc == LDLM_ENQUEUE ? 1 : 0;
>
> Bug.
> The commit in SFS-lustre (7ca60f33893) is correct, but you dropped the
> parentheses which introduces a bug.
>
> While the SFS code is correct, it is formatted badly.
> It should be
>
> lru_flags = LDLM_LRU_FLAG_NO_WAIT |
> (ns_connect_lru_resize(ns) ?
> LDLM_LRU_FLAG_LRUR : LDLM_LRU_FLAG_AGED);
> or similar.
Thanks for finding that. Shall I submit another patch to fix that or will
you fix it up when you apply it to lustre-testing?
More information about the lustre-devel
mailing list