X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fldlm%2Fldlm_flock.c;h=3abad6f20107a6f7c1107c4858eee7b178101a85;hb=fc9fdcb5ef9c9651690c527559e3d4145eee545b;hp=0db3d4175bf3373334626e65942664f9c007551e;hpb=d2d56f38da01001c92a09afc6b52b5acbd9bc13c;p=fs%2Flustre-release.git diff --git a/lustre/ldlm/ldlm_flock.c b/lustre/ldlm/ldlm_flock.c index 0db3d41..3abad6f 100644 --- a/lustre/ldlm/ldlm_flock.c +++ b/lustre/ldlm/ldlm_flock.c @@ -134,7 +134,7 @@ ldlm_process_flock_lock(struct ldlm_lock *req, int *flags, int first_enq, struct ldlm_lock *new = req; struct ldlm_lock *new2 = NULL; ldlm_mode_t mode = req->l_req_mode; - int local = ns->ns_client; + int local = ns_is_client(ns); int added = (mode == LCK_NL); int overlaps = 0; ENTRY; @@ -334,7 +334,7 @@ ldlm_process_flock_lock(struct ldlm_lock *req, int *flags, int first_enq, /* XXX - if ldlm_lock_new() can sleep we should * release the ns_lock, allocate the new lock, * and restart processing this lock. */ - new2 = ldlm_lock_create(ns, NULL, &res->lr_name, LDLM_FLOCK, + new2 = ldlm_lock_create(ns, &res->lr_name, LDLM_FLOCK, lock->l_granted_mode, NULL, NULL, NULL, NULL, 0); if (!new2) { @@ -399,7 +399,7 @@ restart: &rpc_list); unlock_res(res); - rc = ldlm_run_bl_ast_work(&rpc_list); + rc = ldlm_run_ast_work(&rpc_list, LDLM_WORK_BL_AST); lock_res(res); if (rc == -ERESTART) GOTO(restart, -ERESTART); @@ -431,6 +431,7 @@ ldlm_flock_interrupted_wait(void *data) { struct ldlm_lock *lock; struct lustre_handle lockh; + int rc; ENTRY; lock = ((struct ldlm_flock_wait_data *)data)->fwd_lock; @@ -443,7 +444,10 @@ ldlm_flock_interrupted_wait(void *data) ldlm_lock_decref_internal(lock, lock->l_req_mode); ldlm_lock2handle(lock, &lockh); - ldlm_cli_cancel(&lockh); + rc = ldlm_cli_cancel(&lockh); + if (rc != ELDLM_OK) + CERROR("ldlm_cli_cancel: %d\n", rc); + EXIT; } @@ -523,8 +527,8 @@ granted: cfs_flock_set_type(getlk, F_UNLCK); } cfs_flock_set_pid(getlk, (pid_t)lock->l_policy_data.l_flock.pid); - cfs_flock_set_start(getlk, (off_t)lock->l_policy_data.l_flock.start); - cfs_flock_set_end(getlk, (off_t)lock->l_policy_data.l_flock.end); + cfs_flock_set_start(getlk, (loff_t)lock->l_policy_data.l_flock.start); + cfs_flock_set_end(getlk, (loff_t)lock->l_policy_data.l_flock.end); } else { int noreproc = LDLM_FL_WAIT_NOREPROC;