lkml.org 
[lkml]   [2016]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 08/14] staging/lustre/ldlm: engage ELC for all ldlm enqueue req
    Date
    From: Hongchao Zhang <hongchao.zhang@intel.com>

    If there is no request passed into ldlm_cli_enqueue, the enqueue
    request will not engage ELC to drop unneeded locks. currently,
    this kind of request is mainly related to EXTENT locks enqueue
    requests (except for glimpse EXTENT lock for it has an intent).

    Signed-off-by: Hongchao Zhang <hongchao.zhang@intel.com>
    Reviewed-on: http://review.whamcloud.com/21739
    Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-8209
    Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
    Reviewed-by: Vitaly Fertman <vitaly.fertman@seagate.com>
    Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
    ---
    drivers/staging/lustre/lustre/ldlm/ldlm_request.c | 21 ++++-----------------
    1 file changed, 4 insertions(+), 17 deletions(-)

    diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_request.c b/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
    index 1b9ae77..c5d00d1 100644
    --- a/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
    +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_request.c
    @@ -748,17 +748,14 @@ int ldlm_cli_enqueue(struct obd_export *exp, struct ptlrpc_request **reqp,
    lock->l_last_activity = ktime_get_real_seconds();

    /* lock not sent to server yet */
    -
    if (!reqp || !*reqp) {
    - req = ptlrpc_request_alloc_pack(class_exp2cliimp(exp),
    - &RQF_LDLM_ENQUEUE,
    - LUSTRE_DLM_VERSION,
    - LDLM_ENQUEUE);
    - if (!req) {
    + req = ldlm_enqueue_pack(exp, lvb_len);
    + if (IS_ERR(req)) {
    failed_lock_cleanup(ns, lock, einfo->ei_mode);
    LDLM_LOCK_RELEASE(lock);
    - return -ENOMEM;
    + return PTR_ERR(req);
    }
    +
    req_passed_in = 0;
    if (reqp)
    *reqp = req;
    @@ -778,16 +775,6 @@ int ldlm_cli_enqueue(struct obd_export *exp, struct ptlrpc_request **reqp,
    body->lock_flags = ldlm_flags_to_wire(*flags);
    body->lock_handle[0] = *lockh;

    - /* Continue as normal. */
    - if (!req_passed_in) {
    - if (lvb_len > 0)
    - req_capsule_extend(&req->rq_pill,
    - &RQF_LDLM_ENQUEUE_LVB);
    - req_capsule_set_size(&req->rq_pill, &RMF_DLM_LVB, RCL_SERVER,
    - lvb_len);
    - ptlrpc_request_set_replen(req);
    - }
    -
    /*
    * Liblustre client doesn't get extent locks, except for O_APPEND case
    * where [0, OBD_OBJECT_EOF] lock is taken, or truncate, where
    --
    2.7.4
    \
     
     \ /
      Last update: 2016-11-03 02:27    [W:3.481 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site