Group locks are acquired and released manually on client so
it doesn't make sense to send blocking AST to client when
there is an incompatible lock enqueued.
Currently client will set CBPENDING on the group lock when
it receives a blocking AST. Having the CBPENDING flag set
will make ldlm_lock_match to fail and there will be two
group locks granted on the same resource on the client.
Signed-off-by: Li Dongyang <dongyang.li@anu.edu.au>
Change-Id: I7af89e957528b3ed9771d86243ac8271084ee81f
Reviewed-on: http://review.whamcloud.com/15119
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
ldlm_lockname[mode],
ldlm_lockname[lock->l_granted_mode]);
count++;
- if (lock->l_blocking_ast)
+ if (lock->l_blocking_ast &&
+ lock->l_granted_mode != LCK_GROUP)
ldlm_add_ast_work_item(lock, enq, work_list);
}
*contended_locks += check_contention;
compat = 0;
- if (lock->l_blocking_ast)
+ if (lock->l_blocking_ast &&
+ lock->l_req_mode != LCK_GROUP)
ldlm_add_ast_work_item(lock, req, work_list);
}
}