Lines Matching full:ls
16 request_lock(ls, lkb)
17 convert_lock(ls, lkb)
18 unlock_lock(ls, lkb)
19 cancel_lock(ls, lkb)
91 static void do_purge(struct dlm_ls *ls, int nodeid, int pid);
204 static inline void dlm_lock_recovery(struct dlm_ls *ls) in dlm_lock_recovery() argument
206 down_read(&ls->ls_in_recovery); in dlm_lock_recovery()
209 void dlm_unlock_recovery(struct dlm_ls *ls) in dlm_unlock_recovery() argument
211 up_read(&ls->ls_in_recovery); in dlm_unlock_recovery()
214 int dlm_lock_recovery_try(struct dlm_ls *ls) in dlm_lock_recovery_try() argument
216 return down_read_trylock(&ls->ls_in_recovery); in dlm_lock_recovery_try()
341 struct dlm_ls *ls = r->res_ls; in put_rsb() local
346 &ls->ls_rsbtbl[bucket].lock); in put_rsb()
348 spin_unlock(&ls->ls_rsbtbl[bucket].lock); in put_rsb()
356 static int pre_rsb_struct(struct dlm_ls *ls) in pre_rsb_struct() argument
361 spin_lock(&ls->ls_new_rsb_spin); in pre_rsb_struct()
362 if (ls->ls_new_rsb_count > dlm_config.ci_new_rsb_count / 2) { in pre_rsb_struct()
363 spin_unlock(&ls->ls_new_rsb_spin); in pre_rsb_struct()
366 spin_unlock(&ls->ls_new_rsb_spin); in pre_rsb_struct()
368 r1 = dlm_allocate_rsb(ls); in pre_rsb_struct()
369 r2 = dlm_allocate_rsb(ls); in pre_rsb_struct()
371 spin_lock(&ls->ls_new_rsb_spin); in pre_rsb_struct()
373 list_add(&r1->res_hashchain, &ls->ls_new_rsb); in pre_rsb_struct()
374 ls->ls_new_rsb_count++; in pre_rsb_struct()
377 list_add(&r2->res_hashchain, &ls->ls_new_rsb); in pre_rsb_struct()
378 ls->ls_new_rsb_count++; in pre_rsb_struct()
380 count = ls->ls_new_rsb_count; in pre_rsb_struct()
381 spin_unlock(&ls->ls_new_rsb_spin); in pre_rsb_struct()
388 /* If ls->ls_new_rsb is empty, return -EAGAIN, so the caller can
392 static int get_rsb_struct(struct dlm_ls *ls, const void *name, int len, in get_rsb_struct() argument
398 spin_lock(&ls->ls_new_rsb_spin); in get_rsb_struct()
399 if (list_empty(&ls->ls_new_rsb)) { in get_rsb_struct()
400 count = ls->ls_new_rsb_count; in get_rsb_struct()
401 spin_unlock(&ls->ls_new_rsb_spin); in get_rsb_struct()
402 log_debug(ls, "find_rsb retry %d %d %s", in get_rsb_struct()
408 r = list_first_entry(&ls->ls_new_rsb, struct dlm_rsb, res_hashchain); in get_rsb_struct()
412 ls->ls_new_rsb_count--; in get_rsb_struct()
413 spin_unlock(&ls->ls_new_rsb_spin); in get_rsb_struct()
415 r->res_ls = ls; in get_rsb_struct()
538 static int find_rsb_dir(struct dlm_ls *ls, const void *name, int len, in find_rsb_dir() argument
582 error = pre_rsb_struct(ls); in find_rsb_dir()
587 spin_lock(&ls->ls_rsbtbl[b].lock); in find_rsb_dir()
589 error = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].keep, name, len, &r); in find_rsb_dir()
602 error = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].toss, name, len, &r); in find_rsb_dir()
616 log_debug(ls, "find_rsb toss from_other %d master %d dir %d %s", in find_rsb_dir()
625 log_error(ls, "find_rsb toss from_dir %d master %d", in find_rsb_dir()
642 rb_erase(&r->res_hashnode, &ls->ls_rsbtbl[b].toss); in find_rsb_dir()
643 error = rsb_insert(r, &ls->ls_rsbtbl[b].keep); in find_rsb_dir()
655 error = get_rsb_struct(ls, name, len, &r); in find_rsb_dir()
657 spin_unlock(&ls->ls_rsbtbl[b].lock); in find_rsb_dir()
670 log_debug(ls, "find_rsb new from_dir %d recreate %s", in find_rsb_dir()
679 log_error(ls, "find_rsb new from_other %d dir %d our %d %s", in find_rsb_dir()
688 log_debug(ls, "find_rsb new from_other %d dir %d %s", in find_rsb_dir()
704 error = rsb_insert(r, &ls->ls_rsbtbl[b].keep); in find_rsb_dir()
706 spin_unlock(&ls->ls_rsbtbl[b].lock); in find_rsb_dir()
716 static int find_rsb_nodir(struct dlm_ls *ls, const void *name, int len, in find_rsb_nodir() argument
727 error = pre_rsb_struct(ls); in find_rsb_nodir()
731 spin_lock(&ls->ls_rsbtbl[b].lock); in find_rsb_nodir()
733 error = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].keep, name, len, &r); in find_rsb_nodir()
746 error = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].toss, name, len, &r); in find_rsb_nodir()
759 log_error(ls, "find_rsb toss from_nodeid %d master %d dir %d", in find_rsb_nodir()
770 log_error(ls, "find_rsb toss our %d master %d dir %d", in find_rsb_nodir()
777 rb_erase(&r->res_hashnode, &ls->ls_rsbtbl[b].toss); in find_rsb_nodir()
778 error = rsb_insert(r, &ls->ls_rsbtbl[b].keep); in find_rsb_nodir()
787 error = get_rsb_struct(ls, name, len, &r); in find_rsb_nodir()
789 spin_unlock(&ls->ls_rsbtbl[b].lock); in find_rsb_nodir()
802 error = rsb_insert(r, &ls->ls_rsbtbl[b].keep); in find_rsb_nodir()
804 spin_unlock(&ls->ls_rsbtbl[b].lock); in find_rsb_nodir()
810 static int find_rsb(struct dlm_ls *ls, const void *name, int len, in find_rsb() argument
821 b = hash & (ls->ls_rsbtbl_size - 1); in find_rsb()
823 dir_nodeid = dlm_hash2nodeid(ls, hash); in find_rsb()
825 if (dlm_no_directory(ls)) in find_rsb()
826 return find_rsb_nodir(ls, name, len, hash, b, dir_nodeid, in find_rsb()
829 return find_rsb_dir(ls, name, len, hash, b, dir_nodeid, in find_rsb()
836 static int validate_master_nodeid(struct dlm_ls *ls, struct dlm_rsb *r, in validate_master_nodeid() argument
839 if (dlm_no_directory(ls)) { in validate_master_nodeid()
840 log_error(ls, "find_rsb keep from_nodeid %d master %d dir %d", in validate_master_nodeid()
853 log_debug(ls, "validate master from_other %d master %d " in validate_master_nodeid()
864 log_error(ls, "validate master from_dir %d master %d " in validate_master_nodeid()
876 static void __dlm_master_lookup(struct dlm_ls *ls, struct dlm_rsb *r, int our_nodeid, in __dlm_master_lookup() argument
885 log_error(ls, "%s res_dir %d our %d %s", __func__, in __dlm_master_lookup()
890 if (fix_master && dlm_is_removed(ls, r->res_master_nodeid)) { in __dlm_master_lookup()
903 log_error(ls, "%s fix_master on toss", __func__); in __dlm_master_lookup()
914 log_limit(ls, "%s from_master %d master_nodeid %d res_nodeid %d first %x %s", in __dlm_master_lookup()
919 log_error(ls, "from_master %d our_master", from_nodeid); in __dlm_master_lookup()
934 log_debug(ls, "%s master 0 to %d first %x %s", __func__, in __dlm_master_lookup()
947 log_limit(ls, "%s from master %d flags %x first %x %s", in __dlm_master_lookup()
987 int dlm_master_lookup(struct dlm_ls *ls, int from_nodeid, const char *name, in dlm_master_lookup() argument
999 log_error(ls, "dlm_master_lookup from our_nodeid %d flags %x", in dlm_master_lookup()
1005 b = hash & (ls->ls_rsbtbl_size - 1); in dlm_master_lookup()
1007 dir_nodeid = dlm_hash2nodeid(ls, hash); in dlm_master_lookup()
1009 log_error(ls, "dlm_master_lookup from %d dir %d our %d h %x %d", in dlm_master_lookup()
1011 ls->ls_num_nodes); in dlm_master_lookup()
1017 error = pre_rsb_struct(ls); in dlm_master_lookup()
1021 spin_lock(&ls->ls_rsbtbl[b].lock); in dlm_master_lookup()
1022 error = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].keep, name, len, &r); in dlm_master_lookup()
1029 spin_unlock(&ls->ls_rsbtbl[b].lock); in dlm_master_lookup()
1032 __dlm_master_lookup(ls, r, our_nodeid, from_nodeid, false, in dlm_master_lookup()
1042 error = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].toss, name, len, &r); in dlm_master_lookup()
1050 __dlm_master_lookup(ls, r, our_nodeid, from_nodeid, true, flags, in dlm_master_lookup()
1055 spin_unlock(&ls->ls_rsbtbl[b].lock); in dlm_master_lookup()
1060 error = get_rsb_struct(ls, name, len, &r); in dlm_master_lookup()
1062 spin_unlock(&ls->ls_rsbtbl[b].lock); in dlm_master_lookup()
1076 error = rsb_insert(r, &ls->ls_rsbtbl[b].toss); in dlm_master_lookup()
1080 spin_unlock(&ls->ls_rsbtbl[b].lock); in dlm_master_lookup()
1088 spin_unlock(&ls->ls_rsbtbl[b].lock); in dlm_master_lookup()
1092 static void dlm_dump_rsb_hash(struct dlm_ls *ls, uint32_t hash) in dlm_dump_rsb_hash() argument
1098 for (i = 0; i < ls->ls_rsbtbl_size; i++) { in dlm_dump_rsb_hash()
1099 spin_lock(&ls->ls_rsbtbl[i].lock); in dlm_dump_rsb_hash()
1100 for (n = rb_first(&ls->ls_rsbtbl[i].keep); n; n = rb_next(n)) { in dlm_dump_rsb_hash()
1105 spin_unlock(&ls->ls_rsbtbl[i].lock); in dlm_dump_rsb_hash()
1109 void dlm_dump_rsb_name(struct dlm_ls *ls, const char *name, int len) in dlm_dump_rsb_name() argument
1116 b = hash & (ls->ls_rsbtbl_size - 1); in dlm_dump_rsb_name()
1118 spin_lock(&ls->ls_rsbtbl[b].lock); in dlm_dump_rsb_name()
1119 error = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].keep, name, len, &r); in dlm_dump_rsb_name()
1123 error = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].toss, name, len, &r); in dlm_dump_rsb_name()
1129 spin_unlock(&ls->ls_rsbtbl[b].lock); in dlm_dump_rsb_name()
1135 struct dlm_ls *ls = r->res_ls; in toss_rsb() local
1139 rb_erase(&r->res_hashnode, &ls->ls_rsbtbl[r->res_bucket].keep); in toss_rsb()
1140 rsb_insert(r, &ls->ls_rsbtbl[r->res_bucket].toss); in toss_rsb()
1142 set_bit(DLM_RTF_SHRINK_BIT, &ls->ls_rsbtbl[r->res_bucket].flags); in toss_rsb()
1190 static int _create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret, in _create_lkb() argument
1196 lkb = dlm_allocate_lkb(ls); in _create_lkb()
1212 spin_lock(&ls->ls_lkbidr_spin); in _create_lkb()
1213 rv = idr_alloc(&ls->ls_lkbidr, lkb, start, end, GFP_NOWAIT); in _create_lkb()
1216 spin_unlock(&ls->ls_lkbidr_spin); in _create_lkb()
1220 log_error(ls, "create_lkb idr error %d", rv); in _create_lkb()
1229 static int create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret) in create_lkb() argument
1231 return _create_lkb(ls, lkb_ret, 1, 0); in create_lkb()
1234 static int find_lkb(struct dlm_ls *ls, uint32_t lkid, struct dlm_lkb **lkb_ret) in find_lkb() argument
1238 spin_lock(&ls->ls_lkbidr_spin); in find_lkb()
1239 lkb = idr_find(&ls->ls_lkbidr, lkid); in find_lkb()
1242 spin_unlock(&ls->ls_lkbidr_spin); in find_lkb()
1261 static int __put_lkb(struct dlm_ls *ls, struct dlm_lkb *lkb) in __put_lkb() argument
1267 &ls->ls_lkbidr_spin); in __put_lkb()
1269 idr_remove(&ls->ls_lkbidr, lkid); in __put_lkb()
1270 spin_unlock(&ls->ls_lkbidr_spin); in __put_lkb()
1285 struct dlm_ls *ls; in dlm_put_lkb() local
1290 ls = lkb->lkb_resource->res_ls; in dlm_put_lkb()
1291 return __put_lkb(ls, lkb); in dlm_put_lkb()
1408 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in add_to_waiters() local
1412 mutex_lock(&ls->ls_waiters_mutex); in add_to_waiters()
1435 log_debug(ls, "addwait %x cur %d overlap %d count %d f %x", in add_to_waiters()
1446 list_add(&lkb->lkb_wait_reply, &ls->ls_waiters); in add_to_waiters()
1449 log_error(ls, "addwait error %x %d flags %x %d %d %s", in add_to_waiters()
1452 mutex_unlock(&ls->ls_waiters_mutex); in add_to_waiters()
1464 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in _remove_from_waiters() local
1469 log_debug(ls, "remwait %x unlock_reply overlap", lkb->lkb_id); in _remove_from_waiters()
1476 log_debug(ls, "remwait %x cancel_reply overlap", lkb->lkb_id); in _remove_from_waiters()
1486 log_debug(ls, "remwait %x cancel_reply wait_type %d", in _remove_from_waiters()
1502 log_debug(ls, "remwait %x convert_reply zap overlap_cancel", in _remove_from_waiters()
1518 log_error(ls, "remwait error %x remote %d %x msg %d flags %x no wait", in _remove_from_waiters()
1530 log_error(ls, "remwait error %x reply %d wait_type %d overlap", in _remove_from_waiters()
1548 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in remove_from_waiters() local
1551 mutex_lock(&ls->ls_waiters_mutex); in remove_from_waiters()
1553 mutex_unlock(&ls->ls_waiters_mutex); in remove_from_waiters()
1563 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in remove_from_waiters_ms() local
1567 mutex_lock(&ls->ls_waiters_mutex); in remove_from_waiters_ms()
1570 mutex_unlock(&ls->ls_waiters_mutex); in remove_from_waiters_ms()
1574 static void shrink_bucket(struct dlm_ls *ls, int b) in shrink_bucket() argument
1584 memset(&ls->ls_remove_lens, 0, sizeof(int) * DLM_REMOVE_NAMES_MAX); in shrink_bucket()
1586 spin_lock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1588 if (!test_bit(DLM_RTF_SHRINK_BIT, &ls->ls_rsbtbl[b].flags)) { in shrink_bucket()
1589 spin_unlock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1593 for (n = rb_first(&ls->ls_rsbtbl[b].toss); n; n = next) { in shrink_bucket()
1602 if (!dlm_no_directory(ls) && in shrink_bucket()
1615 if (!dlm_no_directory(ls) && in shrink_bucket()
1623 ls->ls_remove_lens[remote_count] = r->res_length; in shrink_bucket()
1624 memcpy(ls->ls_remove_names[remote_count], r->res_name, in shrink_bucket()
1634 log_error(ls, "tossed rsb in use %s", r->res_name); in shrink_bucket()
1638 rb_erase(&r->res_hashnode, &ls->ls_rsbtbl[b].toss); in shrink_bucket()
1643 set_bit(DLM_RTF_SHRINK_BIT, &ls->ls_rsbtbl[b].flags); in shrink_bucket()
1645 clear_bit(DLM_RTF_SHRINK_BIT, &ls->ls_rsbtbl[b].flags); in shrink_bucket()
1646 spin_unlock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1658 name = ls->ls_remove_names[i]; in shrink_bucket()
1659 len = ls->ls_remove_lens[i]; in shrink_bucket()
1661 spin_lock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1662 rv = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].toss, name, len, &r); in shrink_bucket()
1664 spin_unlock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1665 log_debug(ls, "remove_name not toss %s", name); in shrink_bucket()
1670 spin_unlock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1671 log_debug(ls, "remove_name master %d dir %d our %d %s", in shrink_bucket()
1679 spin_unlock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1680 log_error(ls, "remove_name dir %d master %d our %d %s", in shrink_bucket()
1688 spin_unlock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1689 log_debug(ls, "remove_name toss_time %lu now %lu %s", in shrink_bucket()
1695 spin_unlock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1696 log_error(ls, "remove_name in use %s", name); in shrink_bucket()
1700 rb_erase(&r->res_hashnode, &ls->ls_rsbtbl[b].toss); in shrink_bucket()
1702 spin_unlock(&ls->ls_rsbtbl[b].lock); in shrink_bucket()
1708 void dlm_scan_rsbs(struct dlm_ls *ls) in dlm_scan_rsbs() argument
1712 for (i = 0; i < ls->ls_rsbtbl_size; i++) { in dlm_scan_rsbs()
1713 shrink_bucket(ls, i); in dlm_scan_rsbs()
1714 if (dlm_locking_stopped(ls)) in dlm_scan_rsbs()
2659 static int validate_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in validate_lock_args() argument
2701 log_error(ls, "%s %d %x %x %x %d %d", __func__, in validate_lock_args()
2706 log_debug(ls, "%s %d %x %x %x %d %d", __func__, in validate_lock_args()
2724 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in validate_unlock_args() local
2737 log_debug(ls, "unlock on rsb_lookup %x", lkb->lkb_id); in validate_unlock_args()
2750 log_error(ls, "unlock on MSTCPY %x", lkb->lkb_id); in validate_unlock_args()
2761 log_debug(ls, "unlock on ENDOFLIFE %x", lkb->lkb_id); in validate_unlock_args()
2844 log_error(ls, "%s %d %x %x %x %x %d %s", __func__, rv, in validate_unlock_args()
2850 log_debug(ls, "%s %d %x %x %x %x %d %s", __func__, rv, in validate_unlock_args()
3105 static int request_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in request_lock() argument
3112 error = validate_lock_args(ls, lkb, args); in request_lock()
3116 error = find_rsb(ls, name, len, 0, R_REQUEST, &r); in request_lock()
3132 static int convert_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in convert_lock() argument
3143 error = validate_lock_args(ls, lkb, args); in convert_lock()
3154 static int unlock_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in unlock_lock() argument
3176 static int cancel_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in cancel_lock() argument
3213 struct dlm_ls *ls; in dlm_lock() local
3218 ls = dlm_find_lockspace_local(lockspace); in dlm_lock()
3219 if (!ls) in dlm_lock()
3222 dlm_lock_recovery(ls); in dlm_lock()
3225 error = find_lkb(ls, lksb->sb_lkid, &lkb); in dlm_lock()
3227 error = create_lkb(ls, &lkb); in dlm_lock()
3232 trace_dlm_lock_start(ls, lkb, name, namelen, mode, flags); in dlm_lock()
3240 error = convert_lock(ls, lkb, &args); in dlm_lock()
3242 error = request_lock(ls, lkb, name, namelen, &args); in dlm_lock()
3247 trace_dlm_lock_end(ls, lkb, name, namelen, mode, flags, error, true); in dlm_lock()
3250 __put_lkb(ls, lkb); in dlm_lock()
3254 dlm_unlock_recovery(ls); in dlm_lock()
3255 dlm_put_lockspace(ls); in dlm_lock()
3265 struct dlm_ls *ls; in dlm_unlock() local
3270 ls = dlm_find_lockspace_local(lockspace); in dlm_unlock()
3271 if (!ls) in dlm_unlock()
3274 dlm_lock_recovery(ls); in dlm_unlock()
3276 error = find_lkb(ls, lkid, &lkb); in dlm_unlock()
3280 trace_dlm_unlock_start(ls, lkb, flags); in dlm_unlock()
3287 error = cancel_lock(ls, lkb, &args); in dlm_unlock()
3289 error = unlock_lock(ls, lkb, &args); in dlm_unlock()
3296 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_unlock()
3300 dlm_unlock_recovery(ls); in dlm_unlock()
3301 dlm_put_lockspace(ls); in dlm_unlock()
3327 static int _create_message(struct dlm_ls *ls, int mb_len, in _create_message() argument
3348 ms->m_header.u.h_lockspace = cpu_to_le32(ls->ls_global_id); in _create_message()
3642 static int send_lookup_reply(struct dlm_ls *ls, in send_lookup_reply() argument
3646 struct dlm_rsb *r = &ls->ls_local_rsb; in send_lookup_reply()
3693 static int receive_lvb(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_lvb() argument
3700 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_lvb()
3704 if (len > ls->ls_lvblen) in receive_lvb()
3705 len = ls->ls_lvblen; in receive_lvb()
3721 static int receive_request_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_request_args() argument
3735 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_request_args()
3743 static int receive_convert_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_convert_args() argument
3749 if (receive_lvb(ls, lkb, ms)) in receive_convert_args()
3758 static int receive_unlock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_unlock_args() argument
3761 if (receive_lvb(ls, lkb, ms)) in receive_unlock_args()
3769 static void setup_local_lkb(struct dlm_ls *ls, const struct dlm_message *ms) in setup_local_lkb() argument
3771 struct dlm_lkb *lkb = &ls->ls_local_lkb; in setup_local_lkb()
3831 static int receive_request(struct dlm_ls *ls, const struct dlm_message *ms) in receive_request() argument
3840 error = create_lkb(ls, &lkb); in receive_request()
3846 error = receive_request_args(ls, lkb, ms); in receive_request()
3848 __put_lkb(ls, lkb); in receive_request()
3860 error = find_rsb(ls, ms->m_extra, namelen, from_nodeid, in receive_request()
3863 __put_lkb(ls, lkb); in receive_request()
3870 error = validate_master_nodeid(ls, r, from_nodeid); in receive_request()
3874 __put_lkb(ls, lkb); in receive_request()
3901 log_limit(ls, "receive_request %x from %d %d", in receive_request()
3905 setup_local_lkb(ls, ms); in receive_request()
3906 send_request_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_request()
3910 static int receive_convert(struct dlm_ls *ls, const struct dlm_message *ms) in receive_convert() argument
3916 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_convert()
3921 log_error(ls, "receive_convert %x remid %x recover_seq %llu " in receive_convert()
3942 error = receive_convert_args(ls, lkb, ms); in receive_convert()
3961 setup_local_lkb(ls, ms); in receive_convert()
3962 send_convert_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_convert()
3966 static int receive_unlock(struct dlm_ls *ls, const struct dlm_message *ms) in receive_unlock() argument
3972 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_unlock()
3977 log_error(ls, "receive_unlock %x remid %x remote %d %x", in receive_unlock()
3997 error = receive_unlock_args(ls, lkb, ms); in receive_unlock()
4013 setup_local_lkb(ls, ms); in receive_unlock()
4014 send_unlock_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_unlock()
4018 static int receive_cancel(struct dlm_ls *ls, const struct dlm_message *ms) in receive_cancel() argument
4024 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_cancel()
4049 setup_local_lkb(ls, ms); in receive_cancel()
4050 send_cancel_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_cancel()
4054 static int receive_grant(struct dlm_ls *ls, const struct dlm_message *ms) in receive_grant() argument
4060 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_grant()
4085 static int receive_bast(struct dlm_ls *ls, const struct dlm_message *ms) in receive_bast() argument
4091 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_bast()
4113 static void receive_lookup(struct dlm_ls *ls, const struct dlm_message *ms) in receive_lookup() argument
4122 error = dlm_master_lookup(ls, from_nodeid, ms->m_extra, len, 0, in receive_lookup()
4127 receive_request(ls, ms); in receive_lookup()
4130 send_lookup_reply(ls, ms, ret_nodeid, error); in receive_lookup()
4133 static void receive_remove(struct dlm_ls *ls, const struct dlm_message *ms) in receive_remove() argument
4145 log_error(ls, "receive_remove from %d bad len %d", in receive_remove()
4150 dir_nodeid = dlm_hash2nodeid(ls, le32_to_cpu(ms->m_hash)); in receive_remove()
4152 log_error(ls, "receive_remove from %d bad nodeid %d", in receive_remove()
4170 b = hash & (ls->ls_rsbtbl_size - 1); in receive_remove()
4172 spin_lock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4174 rv = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].toss, name, len, &r); in receive_remove()
4177 rv = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].keep, name, len, &r); in receive_remove()
4180 log_error(ls, "receive_remove from %d not found %s", in receive_remove()
4182 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4187 log_error(ls, "receive_remove keep from %d master %d", in receive_remove()
4190 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4194 log_debug(ls, "receive_remove from %d master %d first %x %s", in receive_remove()
4197 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4202 log_error(ls, "receive_remove toss from %d master %d", in receive_remove()
4205 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4210 rb_erase(&r->res_hashnode, &ls->ls_rsbtbl[b].toss); in receive_remove()
4211 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4214 log_error(ls, "receive_remove from %d rsb ref error", in receive_remove()
4217 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4221 static void receive_purge(struct dlm_ls *ls, const struct dlm_message *ms) in receive_purge() argument
4223 do_purge(ls, le32_to_cpu(ms->m_nodeid), le32_to_cpu(ms->m_pid)); in receive_purge()
4226 static int receive_request_reply(struct dlm_ls *ls, in receive_request_reply() argument
4234 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_request_reply()
4249 log_error(ls, "receive_request_reply %x remote %d %x result %d", in receive_request_reply()
4294 log_limit(ls, "receive_request_reply %x from %d %d " in receive_request_reply()
4321 log_error(ls, "receive_request_reply %x error %d", in receive_request_reply()
4327 log_debug(ls, "receive_request_reply %x result %d unlock", in receive_request_reply()
4334 log_debug(ls, "receive_request_reply %x cancel", lkb->lkb_id); in receive_request_reply()
4416 static int receive_convert_reply(struct dlm_ls *ls, in receive_convert_reply() argument
4422 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_convert_reply()
4468 static int receive_unlock_reply(struct dlm_ls *ls, in receive_unlock_reply() argument
4474 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_unlock_reply()
4521 static int receive_cancel_reply(struct dlm_ls *ls, in receive_cancel_reply() argument
4527 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_cancel_reply()
4536 static void receive_lookup_reply(struct dlm_ls *ls, in receive_lookup_reply() argument
4544 error = find_lkb(ls, le32_to_cpu(ms->m_lkid), &lkb); in receive_lookup_reply()
4546 log_error(ls, "%s no lkid %x", __func__, in receive_lookup_reply()
4572 log_error(ls, "receive_lookup_reply %x from %d ret %d " in receive_lookup_reply()
4586 log_error(ls, "receive_lookup_reply %x from %d bad ret_nodeid", in receive_lookup_reply()
4598 log_debug(ls, "receive_lookup_reply %x unlock %x", in receive_lookup_reply()
4616 static void _receive_message(struct dlm_ls *ls, const struct dlm_message *ms, in _receive_message() argument
4621 if (WARN_ON_ONCE(!dlm_is_member(ls, le32_to_cpu(ms->m_header.h_nodeid)))) { in _receive_message()
4622 log_limit(ls, "receive %d from non-member %d %x %x %d", in _receive_message()
4635 error = receive_request(ls, ms); in _receive_message()
4639 error = receive_convert(ls, ms); in _receive_message()
4643 error = receive_unlock(ls, ms); in _receive_message()
4648 error = receive_cancel(ls, ms); in _receive_message()
4654 error = receive_request_reply(ls, ms); in _receive_message()
4658 error = receive_convert_reply(ls, ms); in _receive_message()
4662 error = receive_unlock_reply(ls, ms); in _receive_message()
4666 error = receive_cancel_reply(ls, ms); in _receive_message()
4673 error = receive_grant(ls, ms); in _receive_message()
4678 error = receive_bast(ls, ms); in _receive_message()
4684 receive_lookup(ls, ms); in _receive_message()
4688 receive_remove(ls, ms); in _receive_message()
4694 receive_lookup_reply(ls, ms); in _receive_message()
4700 receive_purge(ls, ms); in _receive_message()
4704 log_error(ls, "unknown message type %d", in _receive_message()
4720 log_debug(ls, "receive %d no %x remote %d %x saved_seq %u", in _receive_message()
4725 log_error(ls, "receive %d no %x remote %d %x saved_seq %u", in _receive_message()
4731 dlm_dump_rsb_hash(ls, le32_to_cpu(ms->m_hash)); in _receive_message()
4735 log_error(ls, "receive %d inval from %d lkid %x remid %x " in _receive_message()
4752 static void dlm_receive_message(struct dlm_ls *ls, const struct dlm_message *ms, in dlm_receive_message() argument
4755 if (dlm_locking_stopped(ls)) { in dlm_receive_message()
4759 if (WARN_ON_ONCE(!ls->ls_generation)) { in dlm_receive_message()
4760 log_limit(ls, "receive %d from %d ignore old gen", in dlm_receive_message()
4765 dlm_add_requestqueue(ls, nodeid, ms); in dlm_receive_message()
4767 dlm_wait_requestqueue(ls); in dlm_receive_message()
4768 _receive_message(ls, ms, 0); in dlm_receive_message()
4775 void dlm_receive_message_saved(struct dlm_ls *ls, const struct dlm_message *ms, in dlm_receive_message_saved() argument
4778 _receive_message(ls, ms, saved_seq); in dlm_receive_message_saved()
4789 struct dlm_ls *ls; in dlm_receive_buffer() local
4811 ls = dlm_find_lockspace_global(le32_to_cpu(hd->u.h_lockspace)); in dlm_receive_buffer()
4812 if (!ls) { in dlm_receive_buffer()
4826 be inactive (in this ls) before transitioning to recovery mode */ in dlm_receive_buffer()
4828 down_read(&ls->ls_recv_active); in dlm_receive_buffer()
4830 dlm_receive_message(ls, &p->message, nodeid); in dlm_receive_buffer()
4832 dlm_receive_rcom(ls, &p->rcom, nodeid); in dlm_receive_buffer()
4834 log_error(ls, "invalid h_cmd %d from %d lockspace %x", in dlm_receive_buffer()
4836 up_read(&ls->ls_recv_active); in dlm_receive_buffer()
4838 dlm_put_lockspace(ls); in dlm_receive_buffer()
4841 static void recover_convert_waiter(struct dlm_ls *ls, struct dlm_lkb *lkb, in recover_convert_waiter() argument
4868 static int waiter_needs_recovery(struct dlm_ls *ls, struct dlm_lkb *lkb, in waiter_needs_recovery() argument
4871 if (dlm_no_directory(ls)) in waiter_needs_recovery()
4874 if (dlm_is_removed(ls, lkb->lkb_wait_nodeid)) in waiter_needs_recovery()
4886 void dlm_recover_waiters_pre(struct dlm_ls *ls) in dlm_recover_waiters_pre() argument
4897 mutex_lock(&ls->ls_waiters_mutex); in dlm_recover_waiters_pre()
4899 list_for_each_entry_safe(lkb, safe, &ls->ls_waiters, lkb_wait_reply) { in dlm_recover_waiters_pre()
4907 log_debug(ls, "waiter %x remote %x msg %d r_nodeid %d " in dlm_recover_waiters_pre()
4926 if (!waiter_needs_recovery(ls, lkb, dir_nodeid)) in dlm_recover_waiters_pre()
4950 log_debug(ls, "rwpre overlap %x %x %d %d %d", in dlm_recover_waiters_pre()
4962 recover_convert_waiter(ls, lkb, ms_local); in dlm_recover_waiters_pre()
4986 log_error(ls, "invalid lkb wait_type %d %d", in dlm_recover_waiters_pre()
4991 mutex_unlock(&ls->ls_waiters_mutex); in dlm_recover_waiters_pre()
4995 static struct dlm_lkb *find_resend_waiter(struct dlm_ls *ls) in find_resend_waiter() argument
4999 mutex_lock(&ls->ls_waiters_mutex); in find_resend_waiter()
5000 list_for_each_entry(iter, &ls->ls_waiters, lkb_wait_reply) { in find_resend_waiter()
5007 mutex_unlock(&ls->ls_waiters_mutex); in find_resend_waiter()
5028 int dlm_recover_waiters_post(struct dlm_ls *ls) in dlm_recover_waiters_post() argument
5035 if (dlm_locking_stopped(ls)) { in dlm_recover_waiters_post()
5036 log_debug(ls, "recover_waiters_post aborted"); in dlm_recover_waiters_post()
5041 lkb = find_resend_waiter(ls); in dlm_recover_waiters_post()
5056 log_debug(ls, "waiter %x remote %x msg %d r_nodeid %d " in dlm_recover_waiters_post()
5074 mutex_lock(&ls->ls_waiters_mutex); in dlm_recover_waiters_post()
5076 mutex_unlock(&ls->ls_waiters_mutex); in dlm_recover_waiters_post()
5115 log_error(ls, "waiter %x msg %d r_nodeid %d " in dlm_recover_waiters_post()
5128 static void purge_mstcpy_list(struct dlm_ls *ls, struct dlm_rsb *r, in purge_mstcpy_list() argument
5140 if (lkb->lkb_recover_seq == ls->ls_recover_seq) in purge_mstcpy_list()
5147 log_error(ls, "purged mstcpy lkb not released"); in purge_mstcpy_list()
5153 struct dlm_ls *ls = r->res_ls; in dlm_purge_mstcpy_locks() local
5155 purge_mstcpy_list(ls, r, &r->res_grantqueue); in dlm_purge_mstcpy_locks()
5156 purge_mstcpy_list(ls, r, &r->res_convertqueue); in dlm_purge_mstcpy_locks()
5157 purge_mstcpy_list(ls, r, &r->res_waitqueue); in dlm_purge_mstcpy_locks()
5160 static void purge_dead_list(struct dlm_ls *ls, struct dlm_rsb *r, in purge_dead_list() argument
5171 dlm_is_removed(ls, lkb->lkb_nodeid)) { in purge_dead_list()
5184 log_error(ls, "purged dead lkb not released"); in purge_dead_list()
5195 void dlm_recover_purge(struct dlm_ls *ls) in dlm_recover_purge() argument
5206 list_for_each_entry(memb, &ls->ls_nodes_gone, list) { in dlm_recover_purge()
5214 down_write(&ls->ls_root_sem); in dlm_recover_purge()
5215 list_for_each_entry(r, &ls->ls_root_list, res_root_list) { in dlm_recover_purge()
5219 purge_dead_list(ls, r, &r->res_grantqueue, in dlm_recover_purge()
5221 purge_dead_list(ls, r, &r->res_convertqueue, in dlm_recover_purge()
5223 purge_dead_list(ls, r, &r->res_waitqueue, in dlm_recover_purge()
5230 up_write(&ls->ls_root_sem); in dlm_recover_purge()
5233 log_rinfo(ls, "dlm_recover_purge %u locks for %u nodes", in dlm_recover_purge()
5237 static struct dlm_rsb *find_grant_rsb(struct dlm_ls *ls, int bucket) in find_grant_rsb() argument
5242 spin_lock(&ls->ls_rsbtbl[bucket].lock); in find_grant_rsb()
5243 for (n = rb_first(&ls->ls_rsbtbl[bucket].keep); n; n = rb_next(n)) { in find_grant_rsb()
5253 spin_unlock(&ls->ls_rsbtbl[bucket].lock); in find_grant_rsb()
5256 spin_unlock(&ls->ls_rsbtbl[bucket].lock); in find_grant_rsb()
5277 void dlm_recover_grant(struct dlm_ls *ls) in dlm_recover_grant() argument
5286 r = find_grant_rsb(ls, bucket); in dlm_recover_grant()
5288 if (bucket == ls->ls_rsbtbl_size - 1) in dlm_recover_grant()
5307 log_rinfo(ls, "dlm_recover_grant %u locks on %u resources", in dlm_recover_grant()
5341 static int receive_rcom_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_rcom_lock_args() argument
5363 if (lvblen > ls->ls_lvblen) in receive_rcom_lock_args()
5365 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_rcom_lock_args()
5392 int dlm_recover_master_copy(struct dlm_ls *ls, const struct dlm_rcom *rc, in dlm_recover_master_copy() argument
5420 error = find_rsb(ls, rl->rl_name, le16_to_cpu(rl->rl_namelen), in dlm_recover_master_copy()
5427 if (dlm_no_directory(ls) && (dlm_dir_nodeid(r) != dlm_our_nodeid())) { in dlm_recover_master_copy()
5428 log_error(ls, "dlm_recover_master_copy remote %d %x not dir", in dlm_recover_master_copy()
5440 error = create_lkb(ls, &lkb); in dlm_recover_master_copy()
5444 error = receive_rcom_lock_args(ls, lkb, r, rc); in dlm_recover_master_copy()
5446 __put_lkb(ls, lkb); in dlm_recover_master_copy()
5452 ls->ls_recover_locks_in++; in dlm_recover_master_copy()
5462 lkb->lkb_recover_seq = ls->ls_recover_seq; in dlm_recover_master_copy()
5469 log_rinfo(ls, "dlm_recover_master_copy remote %d %x error %d", in dlm_recover_master_copy()
5476 int dlm_recover_process_copy(struct dlm_ls *ls, const struct dlm_rcom *rc, in dlm_recover_process_copy() argument
5489 error = find_lkb(ls, lkid, &lkb); in dlm_recover_process_copy()
5491 log_error(ls, "dlm_recover_process_copy no %x remote %d %x %d", in dlm_recover_process_copy()
5502 log_error(ls, "dlm_recover_process_copy bad %x remote %d %x %d", in dlm_recover_process_copy()
5518 log_debug(ls, "dlm_recover_process_copy %x remote %d %x %d", in dlm_recover_process_copy()
5529 log_error(ls, "dlm_recover_process_copy %x remote %d %x %d unk", in dlm_recover_process_copy()
5545 int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua, in dlm_user_request() argument
5553 dlm_lock_recovery(ls); in dlm_user_request()
5555 error = create_lkb(ls, &lkb); in dlm_user_request()
5561 trace_dlm_lock_start(ls, lkb, name, namelen, mode, flags); in dlm_user_request()
5584 error = request_lock(ls, lkb, name, namelen, &args); in dlm_user_request()
5606 trace_dlm_lock_end(ls, lkb, name, namelen, mode, flags, error, false); in dlm_user_request()
5608 __put_lkb(ls, lkb); in dlm_user_request()
5610 dlm_unlock_recovery(ls); in dlm_user_request()
5614 int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_convert() argument
5622 dlm_lock_recovery(ls); in dlm_user_convert()
5624 error = find_lkb(ls, lkid, &lkb); in dlm_user_convert()
5628 trace_dlm_lock_start(ls, lkb, NULL, 0, mode, flags); in dlm_user_convert()
5657 error = convert_lock(ls, lkb, &args); in dlm_user_convert()
5662 trace_dlm_lock_end(ls, lkb, NULL, 0, mode, flags, error, false); in dlm_user_convert()
5665 dlm_unlock_recovery(ls); in dlm_user_convert()
5676 int dlm_user_adopt_orphan(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_adopt_orphan() argument
5685 mutex_lock(&ls->ls_orphans_mutex); in dlm_user_adopt_orphan()
5686 list_for_each_entry(iter, &ls->ls_orphans, lkb_ownqueue) { in dlm_user_adopt_orphan()
5702 mutex_unlock(&ls->ls_orphans_mutex); in dlm_user_adopt_orphan()
5741 int dlm_user_unlock(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_unlock() argument
5749 dlm_lock_recovery(ls); in dlm_user_unlock()
5751 error = find_lkb(ls, lkid, &lkb); in dlm_user_unlock()
5755 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_unlock()
5769 error = unlock_lock(ls, lkb, &args); in dlm_user_unlock()
5785 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_unlock()
5788 dlm_unlock_recovery(ls); in dlm_user_unlock()
5793 int dlm_user_cancel(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_cancel() argument
5801 dlm_lock_recovery(ls); in dlm_user_cancel()
5803 error = find_lkb(ls, lkid, &lkb); in dlm_user_cancel()
5807 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_cancel()
5818 error = cancel_lock(ls, lkb, &args); in dlm_user_cancel()
5826 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_cancel()
5829 dlm_unlock_recovery(ls); in dlm_user_cancel()
5834 int dlm_user_deadlock(struct dlm_ls *ls, uint32_t flags, uint32_t lkid) in dlm_user_deadlock() argument
5842 dlm_lock_recovery(ls); in dlm_user_deadlock()
5844 error = find_lkb(ls, lkid, &lkb); in dlm_user_deadlock()
5848 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_deadlock()
5878 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_deadlock()
5881 dlm_unlock_recovery(ls); in dlm_user_deadlock()
5888 static int orphan_proc_lock(struct dlm_ls *ls, struct dlm_lkb *lkb) in orphan_proc_lock() argument
5894 mutex_lock(&ls->ls_orphans_mutex); in orphan_proc_lock()
5895 list_add_tail(&lkb->lkb_ownqueue, &ls->ls_orphans); in orphan_proc_lock()
5896 mutex_unlock(&ls->ls_orphans_mutex); in orphan_proc_lock()
5900 error = cancel_lock(ls, lkb, &args); in orphan_proc_lock()
5911 static int unlock_proc_lock(struct dlm_ls *ls, struct dlm_lkb *lkb) in unlock_proc_lock() argument
5919 error = unlock_lock(ls, lkb, &args); in unlock_proc_lock()
5929 static struct dlm_lkb *del_proc_lock(struct dlm_ls *ls, in del_proc_lock() argument
5934 spin_lock(&ls->ls_clear_proc_locks); in del_proc_lock()
5946 spin_unlock(&ls->ls_clear_proc_locks); in del_proc_lock()
5960 void dlm_clear_proc_locks(struct dlm_ls *ls, struct dlm_user_proc *proc) in dlm_clear_proc_locks() argument
5964 dlm_lock_recovery(ls); in dlm_clear_proc_locks()
5967 lkb = del_proc_lock(ls, proc); in dlm_clear_proc_locks()
5971 orphan_proc_lock(ls, lkb); in dlm_clear_proc_locks()
5973 unlock_proc_lock(ls, lkb); in dlm_clear_proc_locks()
5982 spin_lock(&ls->ls_clear_proc_locks); in dlm_clear_proc_locks()
5997 spin_unlock(&ls->ls_clear_proc_locks); in dlm_clear_proc_locks()
5998 dlm_unlock_recovery(ls); in dlm_clear_proc_locks()
6001 static void purge_proc_locks(struct dlm_ls *ls, struct dlm_user_proc *proc) in purge_proc_locks() argument
6019 unlock_proc_lock(ls, lkb); in purge_proc_locks()
6042 static void do_purge(struct dlm_ls *ls, int nodeid, int pid) in do_purge() argument
6046 mutex_lock(&ls->ls_orphans_mutex); in do_purge()
6047 list_for_each_entry_safe(lkb, safe, &ls->ls_orphans, lkb_ownqueue) { in do_purge()
6050 unlock_proc_lock(ls, lkb); in do_purge()
6054 mutex_unlock(&ls->ls_orphans_mutex); in do_purge()
6057 static int send_purge(struct dlm_ls *ls, int nodeid, int pid) in send_purge() argument
6063 error = _create_message(ls, sizeof(struct dlm_message), nodeid, in send_purge()
6073 int dlm_user_purge(struct dlm_ls *ls, struct dlm_user_proc *proc, in dlm_user_purge() argument
6079 error = send_purge(ls, nodeid, pid); in dlm_user_purge()
6081 dlm_lock_recovery(ls); in dlm_user_purge()
6083 purge_proc_locks(ls, proc); in dlm_user_purge()
6085 do_purge(ls, nodeid, pid); in dlm_user_purge()
6086 dlm_unlock_recovery(ls); in dlm_user_purge()
6092 int dlm_debug_add_lkb(struct dlm_ls *ls, uint32_t lkb_id, char *name, int len, in dlm_debug_add_lkb() argument
6108 error = _create_lkb(ls, &lkb, lkb_id, lkb_id + 1); in dlm_debug_add_lkb()
6121 error = find_rsb(ls, name, len, 0, R_REQUEST, &r); in dlm_debug_add_lkb()
6124 __put_lkb(ls, lkb); in dlm_debug_add_lkb()
6137 int dlm_debug_add_lkb_to_waiters(struct dlm_ls *ls, uint32_t lkb_id, in dlm_debug_add_lkb_to_waiters() argument
6143 error = find_lkb(ls, lkb_id, &lkb); in dlm_debug_add_lkb_to_waiters()