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 %s", __func__, in validate_lock_args()
2707 log_debug(ls, "%s %d %x %x %x %d %d %s", __func__, in validate_lock_args()
2726 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in validate_unlock_args() local
2739 log_debug(ls, "unlock on rsb_lookup %x", lkb->lkb_id); in validate_unlock_args()
2752 log_error(ls, "unlock on MSTCPY %x", lkb->lkb_id); in validate_unlock_args()
2763 log_debug(ls, "unlock on ENDOFLIFE %x", lkb->lkb_id); in validate_unlock_args()
2846 log_error(ls, "%s %d %x %x %x %x %d %s", __func__, rv, in validate_unlock_args()
2852 log_debug(ls, "%s %d %x %x %x %x %d %s", __func__, rv, in validate_unlock_args()
3107 static int request_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in request_lock() argument
3114 error = validate_lock_args(ls, lkb, args); in request_lock()
3118 error = find_rsb(ls, name, len, 0, R_REQUEST, &r); in request_lock()
3134 static int convert_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in convert_lock() argument
3145 error = validate_lock_args(ls, lkb, args); in convert_lock()
3156 static int unlock_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in unlock_lock() argument
3178 static int cancel_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in cancel_lock() argument
3215 struct dlm_ls *ls; in dlm_lock() local
3220 ls = dlm_find_lockspace_local(lockspace); in dlm_lock()
3221 if (!ls) in dlm_lock()
3224 dlm_lock_recovery(ls); in dlm_lock()
3227 error = find_lkb(ls, lksb->sb_lkid, &lkb); in dlm_lock()
3229 error = create_lkb(ls, &lkb); in dlm_lock()
3234 trace_dlm_lock_start(ls, lkb, name, namelen, mode, flags); in dlm_lock()
3242 error = convert_lock(ls, lkb, &args); in dlm_lock()
3244 error = request_lock(ls, lkb, name, namelen, &args); in dlm_lock()
3249 trace_dlm_lock_end(ls, lkb, name, namelen, mode, flags, error, true); in dlm_lock()
3252 __put_lkb(ls, lkb); in dlm_lock()
3256 dlm_unlock_recovery(ls); in dlm_lock()
3257 dlm_put_lockspace(ls); in dlm_lock()
3267 struct dlm_ls *ls; in dlm_unlock() local
3272 ls = dlm_find_lockspace_local(lockspace); in dlm_unlock()
3273 if (!ls) in dlm_unlock()
3276 dlm_lock_recovery(ls); in dlm_unlock()
3278 error = find_lkb(ls, lkid, &lkb); in dlm_unlock()
3282 trace_dlm_unlock_start(ls, lkb, flags); in dlm_unlock()
3289 error = cancel_lock(ls, lkb, &args); in dlm_unlock()
3291 error = unlock_lock(ls, lkb, &args); in dlm_unlock()
3298 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_unlock()
3302 dlm_unlock_recovery(ls); in dlm_unlock()
3303 dlm_put_lockspace(ls); in dlm_unlock()
3329 static int _create_message(struct dlm_ls *ls, int mb_len, in _create_message() argument
3350 ms->m_header.u.h_lockspace = cpu_to_le32(ls->ls_global_id); in _create_message()
3644 static int send_lookup_reply(struct dlm_ls *ls, in send_lookup_reply() argument
3648 struct dlm_rsb *r = &ls->ls_local_rsb; in send_lookup_reply()
3695 static int receive_lvb(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_lvb() argument
3702 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_lvb()
3706 if (len > ls->ls_lvblen) in receive_lvb()
3707 len = ls->ls_lvblen; in receive_lvb()
3723 static int receive_request_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_request_args() argument
3737 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_request_args()
3745 static int receive_convert_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_convert_args() argument
3751 if (receive_lvb(ls, lkb, ms)) in receive_convert_args()
3760 static int receive_unlock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_unlock_args() argument
3763 if (receive_lvb(ls, lkb, ms)) in receive_unlock_args()
3771 static void setup_local_lkb(struct dlm_ls *ls, const struct dlm_message *ms) in setup_local_lkb() argument
3773 struct dlm_lkb *lkb = &ls->ls_local_lkb; in setup_local_lkb()
3833 static int receive_request(struct dlm_ls *ls, const struct dlm_message *ms) in receive_request() argument
3842 error = create_lkb(ls, &lkb); in receive_request()
3848 error = receive_request_args(ls, lkb, ms); in receive_request()
3850 __put_lkb(ls, lkb); in receive_request()
3862 error = find_rsb(ls, ms->m_extra, namelen, from_nodeid, in receive_request()
3865 __put_lkb(ls, lkb); in receive_request()
3872 error = validate_master_nodeid(ls, r, from_nodeid); in receive_request()
3876 __put_lkb(ls, lkb); in receive_request()
3903 log_limit(ls, "receive_request %x from %d %d", in receive_request()
3907 setup_local_lkb(ls, ms); in receive_request()
3908 send_request_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_request()
3912 static int receive_convert(struct dlm_ls *ls, const struct dlm_message *ms) in receive_convert() argument
3918 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_convert()
3923 log_error(ls, "receive_convert %x remid %x recover_seq %llu " in receive_convert()
3944 error = receive_convert_args(ls, lkb, ms); in receive_convert()
3963 setup_local_lkb(ls, ms); in receive_convert()
3964 send_convert_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_convert()
3968 static int receive_unlock(struct dlm_ls *ls, const struct dlm_message *ms) in receive_unlock() argument
3974 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_unlock()
3979 log_error(ls, "receive_unlock %x remid %x remote %d %x", in receive_unlock()
3999 error = receive_unlock_args(ls, lkb, ms); in receive_unlock()
4015 setup_local_lkb(ls, ms); in receive_unlock()
4016 send_unlock_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_unlock()
4020 static int receive_cancel(struct dlm_ls *ls, const struct dlm_message *ms) in receive_cancel() argument
4026 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_cancel()
4051 setup_local_lkb(ls, ms); in receive_cancel()
4052 send_cancel_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_cancel()
4056 static int receive_grant(struct dlm_ls *ls, const struct dlm_message *ms) in receive_grant() argument
4062 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_grant()
4087 static int receive_bast(struct dlm_ls *ls, const struct dlm_message *ms) in receive_bast() argument
4093 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_bast()
4115 static void receive_lookup(struct dlm_ls *ls, const struct dlm_message *ms) in receive_lookup() argument
4124 error = dlm_master_lookup(ls, from_nodeid, ms->m_extra, len, 0, in receive_lookup()
4129 receive_request(ls, ms); in receive_lookup()
4132 send_lookup_reply(ls, ms, ret_nodeid, error); in receive_lookup()
4135 static void receive_remove(struct dlm_ls *ls, const struct dlm_message *ms) in receive_remove() argument
4147 log_error(ls, "receive_remove from %d bad len %d", in receive_remove()
4152 dir_nodeid = dlm_hash2nodeid(ls, le32_to_cpu(ms->m_hash)); in receive_remove()
4154 log_error(ls, "receive_remove from %d bad nodeid %d", in receive_remove()
4172 b = hash & (ls->ls_rsbtbl_size - 1); in receive_remove()
4174 spin_lock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4176 rv = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].toss, name, len, &r); in receive_remove()
4179 rv = dlm_search_rsb_tree(&ls->ls_rsbtbl[b].keep, name, len, &r); in receive_remove()
4182 log_error(ls, "receive_remove from %d not found %s", in receive_remove()
4184 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4189 log_error(ls, "receive_remove keep from %d master %d", in receive_remove()
4192 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4196 log_debug(ls, "receive_remove from %d master %d first %x %s", in receive_remove()
4199 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4204 log_error(ls, "receive_remove toss from %d master %d", in receive_remove()
4207 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4212 rb_erase(&r->res_hashnode, &ls->ls_rsbtbl[b].toss); in receive_remove()
4213 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4216 log_error(ls, "receive_remove from %d rsb ref error", in receive_remove()
4219 spin_unlock(&ls->ls_rsbtbl[b].lock); in receive_remove()
4223 static void receive_purge(struct dlm_ls *ls, const struct dlm_message *ms) in receive_purge() argument
4225 do_purge(ls, le32_to_cpu(ms->m_nodeid), le32_to_cpu(ms->m_pid)); in receive_purge()
4228 static int receive_request_reply(struct dlm_ls *ls, in receive_request_reply() argument
4236 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_request_reply()
4251 log_error(ls, "receive_request_reply %x remote %d %x result %d", in receive_request_reply()
4296 log_limit(ls, "receive_request_reply %x from %d %d " in receive_request_reply()
4323 log_error(ls, "receive_request_reply %x error %d", in receive_request_reply()
4329 log_debug(ls, "receive_request_reply %x result %d unlock", in receive_request_reply()
4336 log_debug(ls, "receive_request_reply %x cancel", lkb->lkb_id); in receive_request_reply()
4418 static int receive_convert_reply(struct dlm_ls *ls, in receive_convert_reply() argument
4424 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_convert_reply()
4470 static int receive_unlock_reply(struct dlm_ls *ls, in receive_unlock_reply() argument
4476 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_unlock_reply()
4523 static int receive_cancel_reply(struct dlm_ls *ls, in receive_cancel_reply() argument
4529 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_cancel_reply()
4538 static void receive_lookup_reply(struct dlm_ls *ls, in receive_lookup_reply() argument
4546 error = find_lkb(ls, le32_to_cpu(ms->m_lkid), &lkb); in receive_lookup_reply()
4548 log_error(ls, "%s no lkid %x", __func__, in receive_lookup_reply()
4574 log_error(ls, "receive_lookup_reply %x from %d ret %d " in receive_lookup_reply()
4588 log_error(ls, "receive_lookup_reply %x from %d bad ret_nodeid", in receive_lookup_reply()
4600 log_debug(ls, "receive_lookup_reply %x unlock %x", in receive_lookup_reply()
4618 static void _receive_message(struct dlm_ls *ls, const struct dlm_message *ms, in _receive_message() argument
4623 if (WARN_ON_ONCE(!dlm_is_member(ls, le32_to_cpu(ms->m_header.h_nodeid)))) { in _receive_message()
4624 log_limit(ls, "receive %d from non-member %d %x %x %d", in _receive_message()
4637 error = receive_request(ls, ms); in _receive_message()
4641 error = receive_convert(ls, ms); in _receive_message()
4645 error = receive_unlock(ls, ms); in _receive_message()
4650 error = receive_cancel(ls, ms); in _receive_message()
4656 error = receive_request_reply(ls, ms); in _receive_message()
4660 error = receive_convert_reply(ls, ms); in _receive_message()
4664 error = receive_unlock_reply(ls, ms); in _receive_message()
4668 error = receive_cancel_reply(ls, ms); in _receive_message()
4675 error = receive_grant(ls, ms); in _receive_message()
4680 error = receive_bast(ls, ms); in _receive_message()
4686 receive_lookup(ls, ms); in _receive_message()
4690 receive_remove(ls, ms); in _receive_message()
4696 receive_lookup_reply(ls, ms); in _receive_message()
4702 receive_purge(ls, ms); in _receive_message()
4706 log_error(ls, "unknown message type %d", in _receive_message()
4722 log_debug(ls, "receive %d no %x remote %d %x saved_seq %u", in _receive_message()
4727 log_error(ls, "receive %d no %x remote %d %x saved_seq %u", in _receive_message()
4733 dlm_dump_rsb_hash(ls, le32_to_cpu(ms->m_hash)); in _receive_message()
4737 log_error(ls, "receive %d inval from %d lkid %x remid %x " in _receive_message()
4754 static void dlm_receive_message(struct dlm_ls *ls, const struct dlm_message *ms, in dlm_receive_message() argument
4757 if (dlm_locking_stopped(ls)) { in dlm_receive_message()
4761 if (WARN_ON_ONCE(!ls->ls_generation)) { in dlm_receive_message()
4762 log_limit(ls, "receive %d from %d ignore old gen", in dlm_receive_message()
4767 dlm_add_requestqueue(ls, nodeid, ms); in dlm_receive_message()
4769 dlm_wait_requestqueue(ls); in dlm_receive_message()
4770 _receive_message(ls, ms, 0); in dlm_receive_message()
4777 void dlm_receive_message_saved(struct dlm_ls *ls, const struct dlm_message *ms, in dlm_receive_message_saved() argument
4780 _receive_message(ls, ms, saved_seq); in dlm_receive_message_saved()
4791 struct dlm_ls *ls; in dlm_receive_buffer() local
4813 ls = dlm_find_lockspace_global(le32_to_cpu(hd->u.h_lockspace)); in dlm_receive_buffer()
4814 if (!ls) { in dlm_receive_buffer()
4828 be inactive (in this ls) before transitioning to recovery mode */ in dlm_receive_buffer()
4830 down_read(&ls->ls_recv_active); in dlm_receive_buffer()
4832 dlm_receive_message(ls, &p->message, nodeid); in dlm_receive_buffer()
4834 dlm_receive_rcom(ls, &p->rcom, nodeid); in dlm_receive_buffer()
4836 log_error(ls, "invalid h_cmd %d from %d lockspace %x", in dlm_receive_buffer()
4838 up_read(&ls->ls_recv_active); in dlm_receive_buffer()
4840 dlm_put_lockspace(ls); in dlm_receive_buffer()
4843 static void recover_convert_waiter(struct dlm_ls *ls, struct dlm_lkb *lkb, in recover_convert_waiter() argument
4870 static int waiter_needs_recovery(struct dlm_ls *ls, struct dlm_lkb *lkb, in waiter_needs_recovery() argument
4873 if (dlm_no_directory(ls)) in waiter_needs_recovery()
4876 if (dlm_is_removed(ls, lkb->lkb_wait_nodeid)) in waiter_needs_recovery()
4888 void dlm_recover_waiters_pre(struct dlm_ls *ls) in dlm_recover_waiters_pre() argument
4899 mutex_lock(&ls->ls_waiters_mutex); in dlm_recover_waiters_pre()
4901 list_for_each_entry_safe(lkb, safe, &ls->ls_waiters, lkb_wait_reply) { in dlm_recover_waiters_pre()
4909 log_debug(ls, "waiter %x remote %x msg %d r_nodeid %d " in dlm_recover_waiters_pre()
4928 if (!waiter_needs_recovery(ls, lkb, dir_nodeid)) in dlm_recover_waiters_pre()
4952 log_debug(ls, "rwpre overlap %x %x %d %d %d", in dlm_recover_waiters_pre()
4964 recover_convert_waiter(ls, lkb, ms_local); in dlm_recover_waiters_pre()
4988 log_error(ls, "invalid lkb wait_type %d %d", in dlm_recover_waiters_pre()
4993 mutex_unlock(&ls->ls_waiters_mutex); in dlm_recover_waiters_pre()
4997 static struct dlm_lkb *find_resend_waiter(struct dlm_ls *ls) in find_resend_waiter() argument
5001 mutex_lock(&ls->ls_waiters_mutex); in find_resend_waiter()
5002 list_for_each_entry(iter, &ls->ls_waiters, lkb_wait_reply) { in find_resend_waiter()
5009 mutex_unlock(&ls->ls_waiters_mutex); in find_resend_waiter()
5030 int dlm_recover_waiters_post(struct dlm_ls *ls) in dlm_recover_waiters_post() argument
5037 if (dlm_locking_stopped(ls)) { in dlm_recover_waiters_post()
5038 log_debug(ls, "recover_waiters_post aborted"); in dlm_recover_waiters_post()
5043 lkb = find_resend_waiter(ls); in dlm_recover_waiters_post()
5058 log_debug(ls, "waiter %x remote %x msg %d r_nodeid %d " in dlm_recover_waiters_post()
5076 mutex_lock(&ls->ls_waiters_mutex); in dlm_recover_waiters_post()
5078 mutex_unlock(&ls->ls_waiters_mutex); in dlm_recover_waiters_post()
5117 log_error(ls, "waiter %x msg %d r_nodeid %d " in dlm_recover_waiters_post()
5130 static void purge_mstcpy_list(struct dlm_ls *ls, struct dlm_rsb *r, in purge_mstcpy_list() argument
5142 if (lkb->lkb_recover_seq == ls->ls_recover_seq) in purge_mstcpy_list()
5149 log_error(ls, "purged mstcpy lkb not released"); in purge_mstcpy_list()
5155 struct dlm_ls *ls = r->res_ls; in dlm_purge_mstcpy_locks() local
5157 purge_mstcpy_list(ls, r, &r->res_grantqueue); in dlm_purge_mstcpy_locks()
5158 purge_mstcpy_list(ls, r, &r->res_convertqueue); in dlm_purge_mstcpy_locks()
5159 purge_mstcpy_list(ls, r, &r->res_waitqueue); in dlm_purge_mstcpy_locks()
5162 static void purge_dead_list(struct dlm_ls *ls, struct dlm_rsb *r, in purge_dead_list() argument
5173 dlm_is_removed(ls, lkb->lkb_nodeid)) { in purge_dead_list()
5186 log_error(ls, "purged dead lkb not released"); in purge_dead_list()
5197 void dlm_recover_purge(struct dlm_ls *ls) in dlm_recover_purge() argument
5208 list_for_each_entry(memb, &ls->ls_nodes_gone, list) { in dlm_recover_purge()
5216 down_write(&ls->ls_root_sem); in dlm_recover_purge()
5217 list_for_each_entry(r, &ls->ls_root_list, res_root_list) { in dlm_recover_purge()
5221 purge_dead_list(ls, r, &r->res_grantqueue, in dlm_recover_purge()
5223 purge_dead_list(ls, r, &r->res_convertqueue, in dlm_recover_purge()
5225 purge_dead_list(ls, r, &r->res_waitqueue, in dlm_recover_purge()
5232 up_write(&ls->ls_root_sem); in dlm_recover_purge()
5235 log_rinfo(ls, "dlm_recover_purge %u locks for %u nodes", in dlm_recover_purge()
5239 static struct dlm_rsb *find_grant_rsb(struct dlm_ls *ls, int bucket) in find_grant_rsb() argument
5244 spin_lock(&ls->ls_rsbtbl[bucket].lock); in find_grant_rsb()
5245 for (n = rb_first(&ls->ls_rsbtbl[bucket].keep); n; n = rb_next(n)) { in find_grant_rsb()
5255 spin_unlock(&ls->ls_rsbtbl[bucket].lock); in find_grant_rsb()
5258 spin_unlock(&ls->ls_rsbtbl[bucket].lock); in find_grant_rsb()
5279 void dlm_recover_grant(struct dlm_ls *ls) in dlm_recover_grant() argument
5288 r = find_grant_rsb(ls, bucket); in dlm_recover_grant()
5290 if (bucket == ls->ls_rsbtbl_size - 1) in dlm_recover_grant()
5309 log_rinfo(ls, "dlm_recover_grant %u locks on %u resources", in dlm_recover_grant()
5343 static int receive_rcom_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_rcom_lock_args() argument
5365 if (lvblen > ls->ls_lvblen) in receive_rcom_lock_args()
5367 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_rcom_lock_args()
5394 int dlm_recover_master_copy(struct dlm_ls *ls, const struct dlm_rcom *rc, in dlm_recover_master_copy() argument
5422 error = find_rsb(ls, rl->rl_name, le16_to_cpu(rl->rl_namelen), in dlm_recover_master_copy()
5429 if (dlm_no_directory(ls) && (dlm_dir_nodeid(r) != dlm_our_nodeid())) { in dlm_recover_master_copy()
5430 log_error(ls, "dlm_recover_master_copy remote %d %x not dir", in dlm_recover_master_copy()
5442 error = create_lkb(ls, &lkb); in dlm_recover_master_copy()
5446 error = receive_rcom_lock_args(ls, lkb, r, rc); in dlm_recover_master_copy()
5448 __put_lkb(ls, lkb); in dlm_recover_master_copy()
5454 ls->ls_recover_locks_in++; in dlm_recover_master_copy()
5464 lkb->lkb_recover_seq = ls->ls_recover_seq; in dlm_recover_master_copy()
5471 log_rinfo(ls, "dlm_recover_master_copy remote %d %x error %d", in dlm_recover_master_copy()
5478 int dlm_recover_process_copy(struct dlm_ls *ls, const struct dlm_rcom *rc, in dlm_recover_process_copy() argument
5491 error = find_lkb(ls, lkid, &lkb); in dlm_recover_process_copy()
5493 log_error(ls, "dlm_recover_process_copy no %x remote %d %x %d", in dlm_recover_process_copy()
5504 log_error(ls, "dlm_recover_process_copy bad %x remote %d %x %d", in dlm_recover_process_copy()
5520 log_debug(ls, "dlm_recover_process_copy %x remote %d %x %d", in dlm_recover_process_copy()
5531 log_error(ls, "dlm_recover_process_copy %x remote %d %x %d unk", in dlm_recover_process_copy()
5547 int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua, in dlm_user_request() argument
5555 dlm_lock_recovery(ls); in dlm_user_request()
5557 error = create_lkb(ls, &lkb); in dlm_user_request()
5563 trace_dlm_lock_start(ls, lkb, name, namelen, mode, flags); in dlm_user_request()
5586 error = request_lock(ls, lkb, name, namelen, &args); in dlm_user_request()
5608 trace_dlm_lock_end(ls, lkb, name, namelen, mode, flags, error, false); in dlm_user_request()
5610 __put_lkb(ls, lkb); in dlm_user_request()
5612 dlm_unlock_recovery(ls); in dlm_user_request()
5616 int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_convert() argument
5624 dlm_lock_recovery(ls); in dlm_user_convert()
5626 error = find_lkb(ls, lkid, &lkb); in dlm_user_convert()
5630 trace_dlm_lock_start(ls, lkb, NULL, 0, mode, flags); in dlm_user_convert()
5659 error = convert_lock(ls, lkb, &args); in dlm_user_convert()
5664 trace_dlm_lock_end(ls, lkb, NULL, 0, mode, flags, error, false); in dlm_user_convert()
5667 dlm_unlock_recovery(ls); in dlm_user_convert()
5678 int dlm_user_adopt_orphan(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_adopt_orphan() argument
5687 mutex_lock(&ls->ls_orphans_mutex); in dlm_user_adopt_orphan()
5688 list_for_each_entry(iter, &ls->ls_orphans, lkb_ownqueue) { in dlm_user_adopt_orphan()
5704 mutex_unlock(&ls->ls_orphans_mutex); in dlm_user_adopt_orphan()
5743 int dlm_user_unlock(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_unlock() argument
5751 dlm_lock_recovery(ls); in dlm_user_unlock()
5753 error = find_lkb(ls, lkid, &lkb); in dlm_user_unlock()
5757 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_unlock()
5771 error = unlock_lock(ls, lkb, &args); in dlm_user_unlock()
5787 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_unlock()
5790 dlm_unlock_recovery(ls); in dlm_user_unlock()
5795 int dlm_user_cancel(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_cancel() argument
5803 dlm_lock_recovery(ls); in dlm_user_cancel()
5805 error = find_lkb(ls, lkid, &lkb); in dlm_user_cancel()
5809 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_cancel()
5820 error = cancel_lock(ls, lkb, &args); in dlm_user_cancel()
5828 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_cancel()
5831 dlm_unlock_recovery(ls); in dlm_user_cancel()
5836 int dlm_user_deadlock(struct dlm_ls *ls, uint32_t flags, uint32_t lkid) in dlm_user_deadlock() argument
5844 dlm_lock_recovery(ls); in dlm_user_deadlock()
5846 error = find_lkb(ls, lkid, &lkb); in dlm_user_deadlock()
5850 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_deadlock()
5880 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_deadlock()
5883 dlm_unlock_recovery(ls); in dlm_user_deadlock()
5890 static int orphan_proc_lock(struct dlm_ls *ls, struct dlm_lkb *lkb) in orphan_proc_lock() argument
5896 mutex_lock(&ls->ls_orphans_mutex); in orphan_proc_lock()
5897 list_add_tail(&lkb->lkb_ownqueue, &ls->ls_orphans); in orphan_proc_lock()
5898 mutex_unlock(&ls->ls_orphans_mutex); in orphan_proc_lock()
5902 error = cancel_lock(ls, lkb, &args); in orphan_proc_lock()
5913 static int unlock_proc_lock(struct dlm_ls *ls, struct dlm_lkb *lkb) in unlock_proc_lock() argument
5921 error = unlock_lock(ls, lkb, &args); in unlock_proc_lock()
5931 static struct dlm_lkb *del_proc_lock(struct dlm_ls *ls, in del_proc_lock() argument
5936 spin_lock(&ls->ls_clear_proc_locks); in del_proc_lock()
5948 spin_unlock(&ls->ls_clear_proc_locks); in del_proc_lock()
5962 void dlm_clear_proc_locks(struct dlm_ls *ls, struct dlm_user_proc *proc) in dlm_clear_proc_locks() argument
5966 dlm_lock_recovery(ls); in dlm_clear_proc_locks()
5969 lkb = del_proc_lock(ls, proc); in dlm_clear_proc_locks()
5973 orphan_proc_lock(ls, lkb); in dlm_clear_proc_locks()
5975 unlock_proc_lock(ls, lkb); in dlm_clear_proc_locks()
5984 spin_lock(&ls->ls_clear_proc_locks); in dlm_clear_proc_locks()
5999 spin_unlock(&ls->ls_clear_proc_locks); in dlm_clear_proc_locks()
6000 dlm_unlock_recovery(ls); in dlm_clear_proc_locks()
6003 static void purge_proc_locks(struct dlm_ls *ls, struct dlm_user_proc *proc) in purge_proc_locks() argument
6021 unlock_proc_lock(ls, lkb); in purge_proc_locks()
6044 static void do_purge(struct dlm_ls *ls, int nodeid, int pid) in do_purge() argument
6048 mutex_lock(&ls->ls_orphans_mutex); in do_purge()
6049 list_for_each_entry_safe(lkb, safe, &ls->ls_orphans, lkb_ownqueue) { in do_purge()
6052 unlock_proc_lock(ls, lkb); in do_purge()
6056 mutex_unlock(&ls->ls_orphans_mutex); in do_purge()
6059 static int send_purge(struct dlm_ls *ls, int nodeid, int pid) in send_purge() argument
6065 error = _create_message(ls, sizeof(struct dlm_message), nodeid, in send_purge()
6075 int dlm_user_purge(struct dlm_ls *ls, struct dlm_user_proc *proc, in dlm_user_purge() argument
6081 error = send_purge(ls, nodeid, pid); in dlm_user_purge()
6083 dlm_lock_recovery(ls); in dlm_user_purge()
6085 purge_proc_locks(ls, proc); in dlm_user_purge()
6087 do_purge(ls, nodeid, pid); in dlm_user_purge()
6088 dlm_unlock_recovery(ls); in dlm_user_purge()
6094 int dlm_debug_add_lkb(struct dlm_ls *ls, uint32_t lkb_id, char *name, int len, in dlm_debug_add_lkb() argument
6110 error = _create_lkb(ls, &lkb, lkb_id, lkb_id + 1); in dlm_debug_add_lkb()
6123 error = find_rsb(ls, name, len, 0, R_REQUEST, &r); in dlm_debug_add_lkb()
6126 __put_lkb(ls, lkb); in dlm_debug_add_lkb()
6139 int dlm_debug_add_lkb_to_waiters(struct dlm_ls *ls, uint32_t lkb_id, in dlm_debug_add_lkb_to_waiters() argument
6145 error = find_lkb(ls, lkb_id, &lkb); in dlm_debug_add_lkb_to_waiters()