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 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()
375 struct dlm_ls *ls = r->res_ls; in put_rsb() local
379 &ls->ls_rsbtbl_lock); in put_rsb()
381 write_unlock_bh(&ls->ls_rsbtbl_lock); in put_rsb()
393 static void enable_scan_timer(struct dlm_ls *ls, unsigned long jiffies) in enable_scan_timer() argument
395 if (!dlm_locking_stopped(ls)) in enable_scan_timer()
396 mod_timer(&ls->ls_scan_timer, jiffies); in enable_scan_timer()
405 void resume_scan_timer(struct dlm_ls *ls) in resume_scan_timer() argument
409 spin_lock_bh(&ls->ls_scan_lock); in resume_scan_timer()
410 r = list_first_entry_or_null(&ls->ls_scan_list, struct dlm_rsb, in resume_scan_timer()
412 if (r && !timer_pending(&ls->ls_scan_timer)) in resume_scan_timer()
413 enable_scan_timer(ls, r->res_toss_time); in resume_scan_timer()
414 spin_unlock_bh(&ls->ls_scan_lock); in resume_scan_timer()
419 static void del_scan(struct dlm_ls *ls, struct dlm_rsb *r) in del_scan() argument
426 spin_lock_bh(&ls->ls_scan_lock); in del_scan()
434 first = list_first_entry(&ls->ls_scan_list, struct dlm_rsb, in del_scan()
446 first = list_first_entry_or_null(&ls->ls_scan_list, struct dlm_rsb, in del_scan()
449 timer_delete(&ls->ls_scan_timer); in del_scan()
451 enable_scan_timer(ls, first->res_toss_time); in del_scan()
455 spin_unlock_bh(&ls->ls_scan_lock); in del_scan()
458 static void add_scan(struct dlm_ls *ls, struct dlm_rsb *r) in add_scan() argument
464 WARN_ON(!dlm_no_directory(ls) && in add_scan()
474 spin_lock_bh(&ls->ls_scan_lock); in add_scan()
477 if (list_empty(&ls->ls_scan_list)) { in add_scan()
481 list_add_tail(&r->res_scan_list, &ls->ls_scan_list); in add_scan()
482 enable_scan_timer(ls, r->res_toss_time); in add_scan()
490 first = list_first_entry_or_null(&ls->ls_scan_list, struct dlm_rsb, in add_scan()
492 list_add_tail(&r->res_scan_list, &ls->ls_scan_list); in add_scan()
494 enable_scan_timer(ls, r->res_toss_time); in add_scan()
496 enable_scan_timer(ls, first->res_toss_time); in add_scan()
498 spin_unlock_bh(&ls->ls_scan_lock); in add_scan()
512 struct dlm_ls *ls = from_timer(ls, timer, ls_scan_timer); in dlm_rsb_scan() local
522 if (dlm_locking_stopped(ls)) in dlm_rsb_scan()
525 rv = spin_trylock(&ls->ls_scan_lock); in dlm_rsb_scan()
528 enable_scan_timer(ls, DLM_TOSS_TIMER_RETRY); in dlm_rsb_scan()
532 r = list_first_entry_or_null(&ls->ls_scan_list, struct dlm_rsb, in dlm_rsb_scan()
536 spin_unlock(&ls->ls_scan_lock); in dlm_rsb_scan()
546 enable_scan_timer(ls, r->res_toss_time); in dlm_rsb_scan()
547 spin_unlock(&ls->ls_scan_lock); in dlm_rsb_scan()
555 rv = write_trylock(&ls->ls_rsbtbl_lock); in dlm_rsb_scan()
557 spin_unlock(&ls->ls_scan_lock); in dlm_rsb_scan()
559 enable_scan_timer(ls, DLM_TOSS_TIMER_RETRY); in dlm_rsb_scan()
564 rhashtable_remove_fast(&ls->ls_rsbtbl, &r->res_node, in dlm_rsb_scan()
569 write_unlock(&ls->ls_rsbtbl_lock); in dlm_rsb_scan()
572 spin_unlock(&ls->ls_scan_lock); in dlm_rsb_scan()
577 WARN_ON(!dlm_no_directory(ls) && in dlm_rsb_scan()
585 if (!dlm_no_directory(ls) && in dlm_rsb_scan()
594 /* If ls->ls_new_rsb is empty, return -EAGAIN, so the caller can
598 static int get_rsb_struct(struct dlm_ls *ls, const void *name, int len, in get_rsb_struct() argument
607 r->res_ls = ls; in get_rsb_struct()
694 static int find_rsb_dir(struct dlm_ls *ls, const void *name, int len, in find_rsb_dir() argument
736 error = dlm_search_rsb_tree(&ls->ls_rsbtbl, name, len, &r); in find_rsb_dir()
741 read_lock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
743 read_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
753 read_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
758 read_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
763 write_lock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
783 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
787 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
802 log_debug(ls, "find_rsb inactive from_other %d master %d dir %d %s", in find_rsb_dir()
805 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
812 log_error(ls, "find_rsb inactive from_dir %d master %d", in find_rsb_dir()
834 del_scan(ls, r); in find_rsb_dir()
835 list_move(&r->res_slow_list, &ls->ls_slow_active); in find_rsb_dir()
838 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
851 error = get_rsb_struct(ls, name, len, &r); in find_rsb_dir()
861 log_debug(ls, "find_rsb new from_dir %d recreate %s", in find_rsb_dir()
870 log_error(ls, "find_rsb new from_other %d dir %d our %d %s", in find_rsb_dir()
879 log_debug(ls, "find_rsb new from_other %d dir %d %s", in find_rsb_dir()
896 write_lock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
897 error = rsb_insert(r, &ls->ls_rsbtbl); in find_rsb_dir()
902 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
906 list_add(&r->res_slow_list, &ls->ls_slow_active); in find_rsb_dir()
908 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_dir()
918 static int find_rsb_nodir(struct dlm_ls *ls, const void *name, int len, in find_rsb_nodir() argument
928 error = dlm_search_rsb_tree(&ls->ls_rsbtbl, name, len, &r); in find_rsb_nodir()
933 read_lock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
935 read_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
940 read_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
949 read_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
955 write_lock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
960 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
964 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
978 log_error(ls, "find_rsb inactive from_nodeid %d master %d dir %d", in find_rsb_nodir()
981 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
990 log_error(ls, "find_rsb inactive our %d master %d dir %d", in find_rsb_nodir()
997 del_scan(ls, r); in find_rsb_nodir()
998 list_move(&r->res_slow_list, &ls->ls_slow_active); in find_rsb_nodir()
1001 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
1011 error = get_rsb_struct(ls, name, len, &r); in find_rsb_nodir()
1021 write_lock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
1022 error = rsb_insert(r, &ls->ls_rsbtbl); in find_rsb_nodir()
1027 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
1031 list_add(&r->res_slow_list, &ls->ls_slow_active); in find_rsb_nodir()
1033 write_unlock_bh(&ls->ls_rsbtbl_lock); in find_rsb_nodir()
1081 static int find_rsb(struct dlm_ls *ls, const void *name, int len, in find_rsb() argument
1093 dir_nodeid = dlm_hash2nodeid(ls, hash); in find_rsb()
1096 if (dlm_no_directory(ls)) in find_rsb()
1097 rv = find_rsb_nodir(ls, name, len, hash, dir_nodeid, in find_rsb()
1100 rv = find_rsb_dir(ls, name, len, hash, dir_nodeid, in find_rsb()
1109 static int validate_master_nodeid(struct dlm_ls *ls, struct dlm_rsb *r, in validate_master_nodeid() argument
1112 if (dlm_no_directory(ls)) { in validate_master_nodeid()
1113 log_error(ls, "find_rsb keep from_nodeid %d master %d dir %d", in validate_master_nodeid()
1126 log_debug(ls, "validate master from_other %d master %d " in validate_master_nodeid()
1137 log_error(ls, "validate master from_dir %d master %d " in validate_master_nodeid()
1149 static void __dlm_master_lookup(struct dlm_ls *ls, struct dlm_rsb *r, int our_nodeid, in __dlm_master_lookup() argument
1158 log_error(ls, "%s res_dir %d our %d %s", __func__, in __dlm_master_lookup()
1163 if (fix_master && r->res_master_nodeid && dlm_is_removed(ls, r->res_master_nodeid)) { in __dlm_master_lookup()
1176 log_error(ls, "%s fix_master inactive", __func__); in __dlm_master_lookup()
1187 log_limit(ls, "%s from_master %d master_nodeid %d res_nodeid %d first %x %s", in __dlm_master_lookup()
1192 log_error(ls, "from_master %d our_master", from_nodeid); in __dlm_master_lookup()
1207 log_debug(ls, "%s master 0 to %d first %x %s", __func__, in __dlm_master_lookup()
1220 log_limit(ls, "%s from master %d flags %x first %x %s", in __dlm_master_lookup()
1260 static int _dlm_master_lookup(struct dlm_ls *ls, int from_nodeid, const char *name, in _dlm_master_lookup() argument
1272 log_error(ls, "dlm_master_lookup from our_nodeid %d flags %x", in _dlm_master_lookup()
1278 dir_nodeid = dlm_hash2nodeid(ls, hash); in _dlm_master_lookup()
1280 log_error(ls, "dlm_master_lookup from %d dir %d our %d h %x %d", in _dlm_master_lookup()
1282 ls->ls_num_nodes); in _dlm_master_lookup()
1288 error = dlm_search_rsb_tree(&ls->ls_rsbtbl, name, len, &r); in _dlm_master_lookup()
1293 read_lock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1295 read_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1300 read_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1309 read_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1312 __dlm_master_lookup(ls, r, our_nodeid, from_nodeid, false, in _dlm_master_lookup()
1323 write_lock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1328 write_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1335 write_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1342 __dlm_master_lookup(ls, r, our_nodeid, from_nodeid, true, flags, in _dlm_master_lookup()
1353 write_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1358 error = get_rsb_struct(ls, name, len, &r); in _dlm_master_lookup()
1368 write_lock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1369 error = rsb_insert(r, &ls->ls_rsbtbl); in _dlm_master_lookup()
1374 write_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1378 write_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1384 list_add(&r->res_slow_list, &ls->ls_slow_inactive); in _dlm_master_lookup()
1385 write_unlock_bh(&ls->ls_rsbtbl_lock); in _dlm_master_lookup()
1394 int dlm_master_lookup(struct dlm_ls *ls, int from_nodeid, const char *name, in dlm_master_lookup() argument
1399 rv = _dlm_master_lookup(ls, from_nodeid, name, len, flags, r_nodeid, result); in dlm_master_lookup()
1404 static void dlm_dump_rsb_hash(struct dlm_ls *ls, uint32_t hash) in dlm_dump_rsb_hash() argument
1408 read_lock_bh(&ls->ls_rsbtbl_lock); in dlm_dump_rsb_hash()
1409 list_for_each_entry(r, &ls->ls_slow_active, res_slow_list) { in dlm_dump_rsb_hash()
1413 read_unlock_bh(&ls->ls_rsbtbl_lock); in dlm_dump_rsb_hash()
1416 void dlm_dump_rsb_name(struct dlm_ls *ls, const char *name, int len) in dlm_dump_rsb_name() argument
1422 error = dlm_search_rsb_tree(&ls->ls_rsbtbl, name, len, &r); in dlm_dump_rsb_name()
1434 struct dlm_ls *ls = r->res_ls; in deactivate_rsb() local
1439 list_move(&r->res_slow_list, &ls->ls_slow_inactive); in deactivate_rsb()
1456 if (dlm_no_directory(ls) || in deactivate_rsb()
1459 add_scan(ls, r); in deactivate_rsb()
1500 static int _create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret, in _create_lkb() argument
1523 write_lock_bh(&ls->ls_lkbxa_lock); in _create_lkb()
1524 rv = xa_alloc(&ls->ls_lkbxa, &lkb->lkb_id, lkb, limit, GFP_ATOMIC); in _create_lkb()
1525 write_unlock_bh(&ls->ls_lkbxa_lock); in _create_lkb()
1528 log_error(ls, "create_lkb xa error %d", rv); in _create_lkb()
1537 static int create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret) in create_lkb() argument
1539 return _create_lkb(ls, lkb_ret, 1, ULONG_MAX); in create_lkb()
1542 static int find_lkb(struct dlm_ls *ls, uint32_t lkid, struct dlm_lkb **lkb_ret) in find_lkb() argument
1547 lkb = xa_load(&ls->ls_lkbxa, lkid); in find_lkb()
1553 read_lock_bh(&ls->ls_lkbxa_lock); in find_lkb()
1558 read_unlock_bh(&ls->ls_lkbxa_lock); in find_lkb()
1579 static int __put_lkb(struct dlm_ls *ls, struct dlm_lkb *lkb) in __put_lkb() argument
1585 &ls->ls_lkbxa_lock); in __put_lkb()
1587 xa_erase(&ls->ls_lkbxa, lkid); in __put_lkb()
1588 write_unlock_bh(&ls->ls_lkbxa_lock); in __put_lkb()
1603 struct dlm_ls *ls; in dlm_put_lkb() local
1608 ls = lkb->lkb_resource->res_ls; in dlm_put_lkb()
1609 return __put_lkb(ls, lkb); in dlm_put_lkb()
1724 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in add_to_waiters() local
1726 spin_lock_bh(&ls->ls_waiters_lock); in add_to_waiters()
1746 log_debug(ls, "addwait %x cur %d overlap %d count %d f %x", in add_to_waiters()
1760 list_add(&lkb->lkb_wait_reply, &ls->ls_waiters); in add_to_waiters()
1762 spin_unlock_bh(&ls->ls_waiters_lock); in add_to_waiters()
1773 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in _remove_from_waiters() local
1778 log_debug(ls, "remwait %x unlock_reply overlap", lkb->lkb_id); in _remove_from_waiters()
1785 log_debug(ls, "remwait %x cancel_reply overlap", lkb->lkb_id); in _remove_from_waiters()
1795 log_debug(ls, "remwait %x cancel_reply wait_type %d", in _remove_from_waiters()
1811 log_debug(ls, "remwait %x convert_reply zap overlap_cancel", in _remove_from_waiters()
1827 log_error(ls, "remwait error %x remote %d %x msg %d flags %x no wait", in _remove_from_waiters()
1839 log_error(ls, "remwait error %x reply %d wait_type %d overlap", in _remove_from_waiters()
1858 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in remove_from_waiters() local
1861 spin_lock_bh(&ls->ls_waiters_lock); in remove_from_waiters()
1863 spin_unlock_bh(&ls->ls_waiters_lock); in remove_from_waiters()
1877 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in remove_from_waiters_ms() local
1881 spin_lock_bh(&ls->ls_waiters_lock); in remove_from_waiters_ms()
1883 WARN_ON_ONCE(!rwsem_is_locked(&ls->ls_in_recovery) || in remove_from_waiters_ms()
1884 !dlm_locking_stopped(ls)); in remove_from_waiters_ms()
1887 spin_unlock_bh(&ls->ls_waiters_lock); in remove_from_waiters_ms()
2829 static int validate_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in validate_lock_args() argument
2871 log_error(ls, "%s %d %x %x %x %d %d", __func__, in validate_lock_args()
2876 log_debug(ls, "%s %d %x %x %x %d %d", __func__, in validate_lock_args()
2894 struct dlm_ls *ls = lkb->lkb_resource->res_ls; in validate_unlock_args() local
2907 log_debug(ls, "unlock on rsb_lookup %x", lkb->lkb_id); in validate_unlock_args()
2920 log_error(ls, "unlock on MSTCPY %x", lkb->lkb_id); in validate_unlock_args()
2931 log_debug(ls, "unlock on ENDOFLIFE %x", lkb->lkb_id); in validate_unlock_args()
3014 log_error(ls, "%s %d %x %x %x %x %d %s", __func__, rv, in validate_unlock_args()
3020 log_debug(ls, "%s %d %x %x %x %x %d %s", __func__, rv, in validate_unlock_args()
3275 static int request_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in request_lock() argument
3282 error = validate_lock_args(ls, lkb, args); in request_lock()
3286 error = find_rsb(ls, name, len, 0, R_REQUEST, &r); in request_lock()
3302 static int convert_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in convert_lock() argument
3313 error = validate_lock_args(ls, lkb, args); in convert_lock()
3324 static int unlock_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in unlock_lock() argument
3346 static int cancel_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, in cancel_lock() argument
3383 struct dlm_ls *ls; in dlm_lock() local
3388 ls = dlm_find_lockspace_local(lockspace); in dlm_lock()
3389 if (!ls) in dlm_lock()
3392 dlm_lock_recovery(ls); in dlm_lock()
3395 error = find_lkb(ls, lksb->sb_lkid, &lkb); in dlm_lock()
3397 error = create_lkb(ls, &lkb); in dlm_lock()
3402 trace_dlm_lock_start(ls, lkb, name, namelen, mode, flags); in dlm_lock()
3410 error = convert_lock(ls, lkb, &args); in dlm_lock()
3412 error = request_lock(ls, lkb, name, namelen, &args); in dlm_lock()
3417 trace_dlm_lock_end(ls, lkb, name, namelen, mode, flags, error, true); in dlm_lock()
3420 __put_lkb(ls, lkb); in dlm_lock()
3424 dlm_unlock_recovery(ls); in dlm_lock()
3425 dlm_put_lockspace(ls); in dlm_lock()
3435 struct dlm_ls *ls; in dlm_unlock() local
3440 ls = dlm_find_lockspace_local(lockspace); in dlm_unlock()
3441 if (!ls) in dlm_unlock()
3444 dlm_lock_recovery(ls); in dlm_unlock()
3446 error = find_lkb(ls, lkid, &lkb); in dlm_unlock()
3450 trace_dlm_unlock_start(ls, lkb, flags); in dlm_unlock()
3457 error = cancel_lock(ls, lkb, &args); in dlm_unlock()
3459 error = unlock_lock(ls, lkb, &args); in dlm_unlock()
3466 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_unlock()
3470 dlm_unlock_recovery(ls); in dlm_unlock()
3471 dlm_put_lockspace(ls); in dlm_unlock()
3497 static int _create_message(struct dlm_ls *ls, int mb_len, in _create_message() argument
3517 ms->m_header.u.h_lockspace = cpu_to_le32(ls->ls_global_id); in _create_message()
3800 static int send_lookup_reply(struct dlm_ls *ls, in send_lookup_reply() argument
3804 struct dlm_rsb *r = &ls->ls_local_rsb; in send_lookup_reply()
3850 static int receive_lvb(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_lvb() argument
3857 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_lvb()
3861 if (len > ls->ls_lvblen) in receive_lvb()
3862 len = ls->ls_lvblen; in receive_lvb()
3878 static int receive_request_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_request_args() argument
3892 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_request_args()
3900 static int receive_convert_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_convert_args() argument
3906 if (receive_lvb(ls, lkb, ms)) in receive_convert_args()
3915 static int receive_unlock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_unlock_args() argument
3918 if (receive_lvb(ls, lkb, ms)) in receive_unlock_args()
3926 static void setup_local_lkb(struct dlm_ls *ls, const struct dlm_message *ms) in setup_local_lkb() argument
3928 struct dlm_lkb *lkb = &ls->ls_local_lkb; in setup_local_lkb()
3988 static int receive_request(struct dlm_ls *ls, const struct dlm_message *ms) in receive_request() argument
3997 error = create_lkb(ls, &lkb); in receive_request()
4003 error = receive_request_args(ls, lkb, ms); in receive_request()
4005 __put_lkb(ls, lkb); in receive_request()
4017 error = find_rsb(ls, ms->m_extra, namelen, from_nodeid, in receive_request()
4020 __put_lkb(ls, lkb); in receive_request()
4027 error = validate_master_nodeid(ls, r, from_nodeid); in receive_request()
4031 __put_lkb(ls, lkb); in receive_request()
4058 log_limit(ls, "receive_request %x from %d %d", in receive_request()
4062 setup_local_lkb(ls, ms); in receive_request()
4063 send_request_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_request()
4067 static int receive_convert(struct dlm_ls *ls, const struct dlm_message *ms) in receive_convert() argument
4073 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_convert()
4078 log_error(ls, "receive_convert %x remid %x recover_seq %llu " in receive_convert()
4099 error = receive_convert_args(ls, lkb, ms); in receive_convert()
4118 setup_local_lkb(ls, ms); in receive_convert()
4119 send_convert_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_convert()
4123 static int receive_unlock(struct dlm_ls *ls, const struct dlm_message *ms) in receive_unlock() argument
4129 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_unlock()
4134 log_error(ls, "receive_unlock %x remid %x remote %d %x", in receive_unlock()
4154 error = receive_unlock_args(ls, lkb, ms); in receive_unlock()
4170 setup_local_lkb(ls, ms); in receive_unlock()
4171 send_unlock_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_unlock()
4175 static int receive_cancel(struct dlm_ls *ls, const struct dlm_message *ms) in receive_cancel() argument
4181 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_cancel()
4206 setup_local_lkb(ls, ms); in receive_cancel()
4207 send_cancel_reply(&ls->ls_local_rsb, &ls->ls_local_lkb, error); in receive_cancel()
4211 static int receive_grant(struct dlm_ls *ls, const struct dlm_message *ms) in receive_grant() argument
4217 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_grant()
4242 static int receive_bast(struct dlm_ls *ls, const struct dlm_message *ms) in receive_bast() argument
4248 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_bast()
4270 static void receive_lookup(struct dlm_ls *ls, const struct dlm_message *ms) in receive_lookup() argument
4279 error = dlm_master_lookup(ls, from_nodeid, ms->m_extra, len, 0, in receive_lookup()
4284 receive_request(ls, ms); in receive_lookup()
4287 send_lookup_reply(ls, ms, ret_nodeid, error); in receive_lookup()
4290 static void receive_remove(struct dlm_ls *ls, const struct dlm_message *ms) in receive_remove() argument
4301 log_error(ls, "receive_remove from %d bad len %d", in receive_remove()
4306 dir_nodeid = dlm_hash2nodeid(ls, le32_to_cpu(ms->m_hash)); in receive_remove()
4308 log_error(ls, "receive_remove from %d bad nodeid %d", in receive_remove()
4328 rv = dlm_search_rsb_tree(&ls->ls_rsbtbl, name, len, &r); in receive_remove()
4332 log_error(ls, "%s from %d not found %s", __func__, in receive_remove()
4337 write_lock_bh(&ls->ls_rsbtbl_lock); in receive_remove()
4340 write_unlock_bh(&ls->ls_rsbtbl_lock); in receive_remove()
4342 log_error(ls, "%s from %d got removed during removal %s", in receive_remove()
4352 log_error(ls, "receive_remove on active rsb from %d master %d", in receive_remove()
4355 write_unlock_bh(&ls->ls_rsbtbl_lock); in receive_remove()
4361 log_debug(ls, "receive_remove from %d master %d first %x %s", in receive_remove()
4364 write_unlock_bh(&ls->ls_rsbtbl_lock); in receive_remove()
4369 log_error(ls, "receive_remove inactive from %d master %d", in receive_remove()
4372 write_unlock_bh(&ls->ls_rsbtbl_lock); in receive_remove()
4377 rhashtable_remove_fast(&ls->ls_rsbtbl, &r->res_node, in receive_remove()
4380 write_unlock_bh(&ls->ls_rsbtbl_lock); in receive_remove()
4385 static void receive_purge(struct dlm_ls *ls, const struct dlm_message *ms) in receive_purge() argument
4387 do_purge(ls, le32_to_cpu(ms->m_nodeid), le32_to_cpu(ms->m_pid)); in receive_purge()
4390 static int receive_request_reply(struct dlm_ls *ls, in receive_request_reply() argument
4398 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_request_reply()
4413 log_error(ls, "receive_request_reply %x remote %d %x result %d", in receive_request_reply()
4458 log_limit(ls, "receive_request_reply %x from %d %d " in receive_request_reply()
4485 log_error(ls, "receive_request_reply %x error %d", in receive_request_reply()
4491 log_debug(ls, "receive_request_reply %x result %d unlock", in receive_request_reply()
4498 log_debug(ls, "receive_request_reply %x cancel", lkb->lkb_id); in receive_request_reply()
4579 static int receive_convert_reply(struct dlm_ls *ls, in receive_convert_reply() argument
4585 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_convert_reply()
4630 static int receive_unlock_reply(struct dlm_ls *ls, in receive_unlock_reply() argument
4636 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_unlock_reply()
4682 static int receive_cancel_reply(struct dlm_ls *ls, in receive_cancel_reply() argument
4688 error = find_lkb(ls, le32_to_cpu(ms->m_remid), &lkb); in receive_cancel_reply()
4697 static void receive_lookup_reply(struct dlm_ls *ls, in receive_lookup_reply() argument
4705 error = find_lkb(ls, le32_to_cpu(ms->m_lkid), &lkb); in receive_lookup_reply()
4707 log_error(ls, "%s no lkid %x", __func__, in receive_lookup_reply()
4733 log_error(ls, "receive_lookup_reply %x from %d ret %d " in receive_lookup_reply()
4747 log_error(ls, "receive_lookup_reply %x from %d bad ret_nodeid", in receive_lookup_reply()
4759 log_debug(ls, "receive_lookup_reply %x unlock %x", in receive_lookup_reply()
4777 static void _receive_message(struct dlm_ls *ls, const struct dlm_message *ms, in _receive_message() argument
4782 if (WARN_ON_ONCE(!dlm_is_member(ls, le32_to_cpu(ms->m_header.h_nodeid)))) { in _receive_message()
4783 log_limit(ls, "receive %d from non-member %d %x %x %d", in _receive_message()
4796 error = receive_request(ls, ms); in _receive_message()
4800 error = receive_convert(ls, ms); in _receive_message()
4804 error = receive_unlock(ls, ms); in _receive_message()
4809 error = receive_cancel(ls, ms); in _receive_message()
4815 error = receive_request_reply(ls, ms); in _receive_message()
4819 error = receive_convert_reply(ls, ms); in _receive_message()
4823 error = receive_unlock_reply(ls, ms); in _receive_message()
4827 error = receive_cancel_reply(ls, ms); in _receive_message()
4834 error = receive_grant(ls, ms); in _receive_message()
4839 error = receive_bast(ls, ms); in _receive_message()
4845 receive_lookup(ls, ms); in _receive_message()
4849 receive_remove(ls, ms); in _receive_message()
4855 receive_lookup_reply(ls, ms); in _receive_message()
4861 receive_purge(ls, ms); in _receive_message()
4865 log_error(ls, "unknown message type %d", in _receive_message()
4881 log_debug(ls, "receive %d no %x remote %d %x saved_seq %u", in _receive_message()
4886 log_error(ls, "receive %d no %x remote %d %x saved_seq %u", in _receive_message()
4892 dlm_dump_rsb_hash(ls, le32_to_cpu(ms->m_hash)); in _receive_message()
4896 log_error(ls, "receive %d inval from %d lkid %x remid %x " in _receive_message()
4913 static void dlm_receive_message(struct dlm_ls *ls, const struct dlm_message *ms, in dlm_receive_message() argument
4917 read_lock_bh(&ls->ls_requestqueue_lock); in dlm_receive_message()
4918 if (test_bit(LSFL_RECV_MSG_BLOCKED, &ls->ls_flags)) { in dlm_receive_message()
4922 if (WARN_ON_ONCE(!ls->ls_generation)) { in dlm_receive_message()
4923 read_unlock_bh(&ls->ls_requestqueue_lock); in dlm_receive_message()
4924 log_limit(ls, "receive %d from %d ignore old gen", in dlm_receive_message()
4929 read_unlock_bh(&ls->ls_requestqueue_lock); in dlm_receive_message()
4930 write_lock_bh(&ls->ls_requestqueue_lock); in dlm_receive_message()
4932 if (!test_bit(LSFL_RECV_MSG_BLOCKED, &ls->ls_flags)) { in dlm_receive_message()
4933 write_unlock_bh(&ls->ls_requestqueue_lock); in dlm_receive_message()
4937 dlm_add_requestqueue(ls, nodeid, ms); in dlm_receive_message()
4938 write_unlock_bh(&ls->ls_requestqueue_lock); in dlm_receive_message()
4940 _receive_message(ls, ms, 0); in dlm_receive_message()
4941 read_unlock_bh(&ls->ls_requestqueue_lock); in dlm_receive_message()
4948 void dlm_receive_message_saved(struct dlm_ls *ls, const struct dlm_message *ms, in dlm_receive_message_saved() argument
4951 _receive_message(ls, ms, saved_seq); in dlm_receive_message_saved()
4962 struct dlm_ls *ls; in dlm_receive_buffer() local
4984 ls = dlm_find_lockspace_global(le32_to_cpu(hd->u.h_lockspace)); in dlm_receive_buffer()
4985 if (!ls) { in dlm_receive_buffer()
4999 be inactive (in this ls) before transitioning to recovery mode */ in dlm_receive_buffer()
5001 read_lock_bh(&ls->ls_recv_active); in dlm_receive_buffer()
5003 dlm_receive_message(ls, &p->message, nodeid); in dlm_receive_buffer()
5005 dlm_receive_rcom(ls, &p->rcom, nodeid); in dlm_receive_buffer()
5007 log_error(ls, "invalid h_cmd %d from %d lockspace %x", in dlm_receive_buffer()
5009 read_unlock_bh(&ls->ls_recv_active); in dlm_receive_buffer()
5011 dlm_put_lockspace(ls); in dlm_receive_buffer()
5014 static void recover_convert_waiter(struct dlm_ls *ls, struct dlm_lkb *lkb, in recover_convert_waiter() argument
5018 log_rinfo(ls, "%s %x middle convert in progress", __func__, in recover_convert_waiter()
5044 static int waiter_needs_recovery(struct dlm_ls *ls, struct dlm_lkb *lkb, in waiter_needs_recovery() argument
5047 if (dlm_no_directory(ls)) in waiter_needs_recovery()
5050 if (dlm_is_removed(ls, lkb->lkb_wait_nodeid)) in waiter_needs_recovery()
5062 void dlm_recover_waiters_pre(struct dlm_ls *ls) in dlm_recover_waiters_pre() argument
5073 list_for_each_entry_safe(lkb, safe, &ls->ls_waiters, lkb_wait_reply) { in dlm_recover_waiters_pre()
5081 log_debug(ls, "waiter %x remote %x msg %d r_nodeid %d " in dlm_recover_waiters_pre()
5100 if (!waiter_needs_recovery(ls, lkb, dir_nodeid)) in dlm_recover_waiters_pre()
5124 log_debug(ls, "rwpre overlap %x %x %d %d %d", in dlm_recover_waiters_pre()
5136 recover_convert_waiter(ls, lkb, ms_local); in dlm_recover_waiters_pre()
5160 log_error(ls, "invalid lkb wait_type %d %d", in dlm_recover_waiters_pre()
5168 static struct dlm_lkb *find_resend_waiter(struct dlm_ls *ls) in find_resend_waiter() argument
5172 spin_lock_bh(&ls->ls_waiters_lock); in find_resend_waiter()
5173 list_for_each_entry(iter, &ls->ls_waiters, lkb_wait_reply) { in find_resend_waiter()
5180 spin_unlock_bh(&ls->ls_waiters_lock); in find_resend_waiter()
5212 int dlm_recover_waiters_post(struct dlm_ls *ls) in dlm_recover_waiters_post() argument
5219 if (dlm_locking_stopped(ls)) { in dlm_recover_waiters_post()
5220 log_debug(ls, "recover_waiters_post aborted"); in dlm_recover_waiters_post()
5230 lkb = find_resend_waiter(ls); in dlm_recover_waiters_post()
5250 log_debug(ls, "waiter %x remote %x msg %d r_nodeid %d " in dlm_recover_waiters_post()
5280 spin_lock_bh(&ls->ls_waiters_lock); in dlm_recover_waiters_post()
5282 spin_unlock_bh(&ls->ls_waiters_lock); in dlm_recover_waiters_post()
5327 log_error(ls, "waiter %x msg %d r_nodeid %d " in dlm_recover_waiters_post()
5340 static void purge_mstcpy_list(struct dlm_ls *ls, struct dlm_rsb *r, in purge_mstcpy_list() argument
5352 if (lkb->lkb_recover_seq == ls->ls_recover_seq) in purge_mstcpy_list()
5359 log_error(ls, "purged mstcpy lkb not released"); in purge_mstcpy_list()
5365 struct dlm_ls *ls = r->res_ls; in dlm_purge_mstcpy_locks() local
5367 purge_mstcpy_list(ls, r, &r->res_grantqueue); in dlm_purge_mstcpy_locks()
5368 purge_mstcpy_list(ls, r, &r->res_convertqueue); in dlm_purge_mstcpy_locks()
5369 purge_mstcpy_list(ls, r, &r->res_waitqueue); in dlm_purge_mstcpy_locks()
5372 static void purge_dead_list(struct dlm_ls *ls, struct dlm_rsb *r, in purge_dead_list() argument
5383 dlm_is_removed(ls, lkb->lkb_nodeid)) { in purge_dead_list()
5396 log_error(ls, "purged dead lkb not released"); in purge_dead_list()
5407 void dlm_recover_purge(struct dlm_ls *ls, const struct list_head *root_list) in dlm_recover_purge() argument
5418 list_for_each_entry(memb, &ls->ls_nodes_gone, list) { in dlm_recover_purge()
5429 purge_dead_list(ls, r, &r->res_grantqueue, in dlm_recover_purge()
5431 purge_dead_list(ls, r, &r->res_convertqueue, in dlm_recover_purge()
5433 purge_dead_list(ls, r, &r->res_waitqueue, in dlm_recover_purge()
5442 log_rinfo(ls, "dlm_recover_purge %u locks for %u nodes", in dlm_recover_purge()
5446 static struct dlm_rsb *find_grant_rsb(struct dlm_ls *ls) in find_grant_rsb() argument
5450 read_lock_bh(&ls->ls_rsbtbl_lock); in find_grant_rsb()
5451 list_for_each_entry(r, &ls->ls_slow_active, res_slow_list) { in find_grant_rsb()
5459 read_unlock_bh(&ls->ls_rsbtbl_lock); in find_grant_rsb()
5462 read_unlock_bh(&ls->ls_rsbtbl_lock); in find_grant_rsb()
5483 void dlm_recover_grant(struct dlm_ls *ls) in dlm_recover_grant() argument
5491 r = find_grant_rsb(ls); in dlm_recover_grant()
5509 log_rinfo(ls, "dlm_recover_grant %u locks on %u resources", in dlm_recover_grant()
5543 static int receive_rcom_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, in receive_rcom_lock_args() argument
5565 if (lvblen > ls->ls_lvblen) in receive_rcom_lock_args()
5567 lkb->lkb_lvbptr = dlm_allocate_lvb(ls); in receive_rcom_lock_args()
5579 log_limit(ls, "%s %x middle convert gr %d rq %d remote %d %x", in receive_rcom_lock_args()
5595 int dlm_recover_master_copy(struct dlm_ls *ls, const struct dlm_rcom *rc, in dlm_recover_master_copy() argument
5623 error = find_rsb(ls, rl->rl_name, le16_to_cpu(rl->rl_namelen), in dlm_recover_master_copy()
5630 if (dlm_no_directory(ls) && (dlm_dir_nodeid(r) != dlm_our_nodeid())) { in dlm_recover_master_copy()
5631 log_error(ls, "dlm_recover_master_copy remote %d %x not dir", in dlm_recover_master_copy()
5643 error = create_lkb(ls, &lkb); in dlm_recover_master_copy()
5647 error = receive_rcom_lock_args(ls, lkb, r, rc); in dlm_recover_master_copy()
5649 __put_lkb(ls, lkb); in dlm_recover_master_copy()
5655 ls->ls_recover_locks_in++; in dlm_recover_master_copy()
5665 lkb->lkb_recover_seq = ls->ls_recover_seq; in dlm_recover_master_copy()
5672 log_rinfo(ls, "dlm_recover_master_copy remote %d %x error %d", in dlm_recover_master_copy()
5679 int dlm_recover_process_copy(struct dlm_ls *ls, const struct dlm_rcom *rc, in dlm_recover_process_copy() argument
5692 error = find_lkb(ls, lkid, &lkb); in dlm_recover_process_copy()
5694 log_error(ls, "dlm_recover_process_copy no %x remote %d %x %d", in dlm_recover_process_copy()
5705 log_error(ls, "dlm_recover_process_copy bad %x remote %d %x %d", in dlm_recover_process_copy()
5721 log_debug(ls, "dlm_recover_process_copy %x remote %d %x %d", in dlm_recover_process_copy()
5732 log_error(ls, "dlm_recover_process_copy %x remote %d %x %d unk", in dlm_recover_process_copy()
5748 int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua, in dlm_user_request() argument
5756 dlm_lock_recovery(ls); in dlm_user_request()
5758 error = create_lkb(ls, &lkb); in dlm_user_request()
5764 trace_dlm_lock_start(ls, lkb, name, namelen, mode, flags); in dlm_user_request()
5787 error = request_lock(ls, lkb, name, namelen, &args); in dlm_user_request()
5809 trace_dlm_lock_end(ls, lkb, name, namelen, mode, flags, error, false); in dlm_user_request()
5811 __put_lkb(ls, lkb); in dlm_user_request()
5813 dlm_unlock_recovery(ls); in dlm_user_request()
5817 int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_convert() argument
5825 dlm_lock_recovery(ls); in dlm_user_convert()
5827 error = find_lkb(ls, lkid, &lkb); in dlm_user_convert()
5831 trace_dlm_lock_start(ls, lkb, NULL, 0, mode, flags); in dlm_user_convert()
5860 error = convert_lock(ls, lkb, &args); in dlm_user_convert()
5865 trace_dlm_lock_end(ls, lkb, NULL, 0, mode, flags, error, false); in dlm_user_convert()
5868 dlm_unlock_recovery(ls); in dlm_user_convert()
5879 int dlm_user_adopt_orphan(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_adopt_orphan() argument
5888 spin_lock_bh(&ls->ls_orphans_lock); in dlm_user_adopt_orphan()
5889 list_for_each_entry(iter, &ls->ls_orphans, lkb_ownqueue) { in dlm_user_adopt_orphan()
5905 spin_unlock_bh(&ls->ls_orphans_lock); in dlm_user_adopt_orphan()
5944 int dlm_user_unlock(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_unlock() argument
5952 dlm_lock_recovery(ls); in dlm_user_unlock()
5954 error = find_lkb(ls, lkid, &lkb); in dlm_user_unlock()
5958 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_unlock()
5972 error = unlock_lock(ls, lkb, &args); in dlm_user_unlock()
5988 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_unlock()
5991 dlm_unlock_recovery(ls); in dlm_user_unlock()
5996 int dlm_user_cancel(struct dlm_ls *ls, struct dlm_user_args *ua_tmp, in dlm_user_cancel() argument
6004 dlm_lock_recovery(ls); in dlm_user_cancel()
6006 error = find_lkb(ls, lkid, &lkb); in dlm_user_cancel()
6010 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_cancel()
6021 error = cancel_lock(ls, lkb, &args); in dlm_user_cancel()
6029 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_cancel()
6032 dlm_unlock_recovery(ls); in dlm_user_cancel()
6037 int dlm_user_deadlock(struct dlm_ls *ls, uint32_t flags, uint32_t lkid) in dlm_user_deadlock() argument
6045 dlm_lock_recovery(ls); in dlm_user_deadlock()
6047 error = find_lkb(ls, lkid, &lkb); in dlm_user_deadlock()
6051 trace_dlm_unlock_start(ls, lkb, flags); in dlm_user_deadlock()
6081 trace_dlm_unlock_end(ls, lkb, flags, error); in dlm_user_deadlock()
6084 dlm_unlock_recovery(ls); in dlm_user_deadlock()
6091 static int orphan_proc_lock(struct dlm_ls *ls, struct dlm_lkb *lkb) in orphan_proc_lock() argument
6097 spin_lock_bh(&ls->ls_orphans_lock); in orphan_proc_lock()
6098 list_add_tail(&lkb->lkb_ownqueue, &ls->ls_orphans); in orphan_proc_lock()
6099 spin_unlock_bh(&ls->ls_orphans_lock); in orphan_proc_lock()
6103 error = cancel_lock(ls, lkb, &args); in orphan_proc_lock()
6114 static int unlock_proc_lock(struct dlm_ls *ls, struct dlm_lkb *lkb) in unlock_proc_lock() argument
6122 error = unlock_lock(ls, lkb, &args); in unlock_proc_lock()
6132 static struct dlm_lkb *del_proc_lock(struct dlm_ls *ls, in del_proc_lock() argument
6137 spin_lock_bh(&ls->ls_clear_proc_locks); in del_proc_lock()
6149 spin_unlock_bh(&ls->ls_clear_proc_locks); in del_proc_lock()
6163 void dlm_clear_proc_locks(struct dlm_ls *ls, struct dlm_user_proc *proc) in dlm_clear_proc_locks() argument
6168 dlm_lock_recovery(ls); in dlm_clear_proc_locks()
6171 lkb = del_proc_lock(ls, proc); in dlm_clear_proc_locks()
6175 orphan_proc_lock(ls, lkb); in dlm_clear_proc_locks()
6177 unlock_proc_lock(ls, lkb); in dlm_clear_proc_locks()
6186 spin_lock_bh(&ls->ls_clear_proc_locks); in dlm_clear_proc_locks()
6200 spin_unlock_bh(&ls->ls_clear_proc_locks); in dlm_clear_proc_locks()
6201 dlm_unlock_recovery(ls); in dlm_clear_proc_locks()
6204 static void purge_proc_locks(struct dlm_ls *ls, struct dlm_user_proc *proc) in purge_proc_locks() argument
6223 unlock_proc_lock(ls, lkb); in purge_proc_locks()
6245 static void do_purge(struct dlm_ls *ls, int nodeid, int pid) in do_purge() argument
6249 spin_lock_bh(&ls->ls_orphans_lock); in do_purge()
6250 list_for_each_entry_safe(lkb, safe, &ls->ls_orphans, lkb_ownqueue) { in do_purge()
6253 unlock_proc_lock(ls, lkb); in do_purge()
6257 spin_unlock_bh(&ls->ls_orphans_lock); in do_purge()
6260 static int send_purge(struct dlm_ls *ls, int nodeid, int pid) in send_purge() argument
6266 error = _create_message(ls, sizeof(struct dlm_message), nodeid, in send_purge()
6276 int dlm_user_purge(struct dlm_ls *ls, struct dlm_user_proc *proc, in dlm_user_purge() argument
6282 error = send_purge(ls, nodeid, pid); in dlm_user_purge()
6284 dlm_lock_recovery(ls); in dlm_user_purge()
6286 purge_proc_locks(ls, proc); in dlm_user_purge()
6288 do_purge(ls, nodeid, pid); in dlm_user_purge()
6289 dlm_unlock_recovery(ls); in dlm_user_purge()
6295 int dlm_debug_add_lkb(struct dlm_ls *ls, uint32_t lkb_id, char *name, int len, in dlm_debug_add_lkb() argument
6311 error = _create_lkb(ls, &lkb, lkb_id, lkb_id + 1); in dlm_debug_add_lkb()
6324 error = find_rsb(ls, name, len, 0, R_REQUEST, &r); in dlm_debug_add_lkb()
6327 __put_lkb(ls, lkb); in dlm_debug_add_lkb()
6340 int dlm_debug_add_lkb_to_waiters(struct dlm_ls *ls, uint32_t lkb_id, in dlm_debug_add_lkb_to_waiters() argument
6346 error = find_lkb(ls, lkb_id, &lkb); in dlm_debug_add_lkb_to_waiters()