Lines Matching refs:res

67 static inline int dlm_num_locks_in_lockres(struct dlm_lock_resource *res);
75 struct dlm_lock_resource *res,
78 struct dlm_lock_resource *res,
95 struct dlm_lock_resource *res,
255 struct dlm_lock_resource *res; in dlm_print_reco_node_status() local
293 list_for_each_entry(res, &dlm->reco.resources, recovering) { in dlm_print_reco_node_status()
295 dlm->name, res->lockname.len, res->lockname.name); in dlm_print_reco_node_status()
883 struct dlm_lock_resource *res; in dlm_request_all_locks_worker() local
929 list_for_each_entry(res, &resources, recovering) { in dlm_request_all_locks_worker()
930 ret = dlm_send_one_lockres(dlm, res, mres, reco_master, in dlm_request_all_locks_worker()
1055 struct dlm_lock_resource *res, *next; in dlm_move_reco_locks_to_list() local
1059 list_for_each_entry_safe(res, next, &dlm->reco.resources, recovering) { in dlm_move_reco_locks_to_list()
1062 if (dlm_is_recovery_lock(res->lockname.name, in dlm_move_reco_locks_to_list()
1063 res->lockname.len)) { in dlm_move_reco_locks_to_list()
1064 spin_lock(&res->spinlock); in dlm_move_reco_locks_to_list()
1065 list_for_each_entry(lock, &res->granted, list) { in dlm_move_reco_locks_to_list()
1079 spin_unlock(&res->spinlock); in dlm_move_reco_locks_to_list()
1083 if (res->owner == dead_node) { in dlm_move_reco_locks_to_list()
1087 list_move_tail(&res->recovering, list); in dlm_move_reco_locks_to_list()
1088 } else if (res->owner == DLM_LOCK_RES_OWNER_UNKNOWN) { in dlm_move_reco_locks_to_list()
1091 list_move_tail(&res->recovering, list); in dlm_move_reco_locks_to_list()
1097 static inline int dlm_num_locks_in_lockres(struct dlm_lock_resource *res) in dlm_num_locks_in_lockres() argument
1100 struct list_head *iter, *queue = &res->granted; in dlm_num_locks_in_lockres()
1115 struct dlm_lock_resource *res, in dlm_send_mig_lockres_msg() argument
1138 dlm->name, res->lockname.len, res->lockname.name, in dlm_send_mig_lockres_msg()
1168 dlm_init_migratable_lockres(mres, res->lockname.name, in dlm_send_mig_lockres_msg()
1169 res->lockname.len, mres_total_locks, in dlm_send_mig_lockres_msg()
1279 int dlm_send_one_lockres(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_send_one_lockres() argument
1293 total_locks = dlm_num_locks_in_lockres(res); in dlm_send_one_lockres()
1302 dlm_init_migratable_lockres(mres, res->lockname.name, in dlm_send_one_lockres()
1303 res->lockname.len, total_locks, in dlm_send_one_lockres()
1304 mig_cookie, flags, res->owner); in dlm_send_one_lockres()
1308 queue = dlm_list_idx_to_ptr(res, i); in dlm_send_one_lockres()
1318 res, total_locks); in dlm_send_one_lockres()
1326 dlm->name, res->lockname.len, res->lockname.name, in dlm_send_one_lockres()
1332 ret = dlm_send_mig_lockres_msg(dlm, mres, send_to, res, total_locks); in dlm_send_one_lockres()
1345 res->lockname.len, res->lockname.name); in dlm_send_one_lockres()
1375 struct dlm_lock_resource *res = NULL; in dlm_mig_lockres_handler() local
1403 res = dlm_lookup_lockres(dlm, mres->lockname, mres->lockname_len); in dlm_mig_lockres_handler()
1404 if (res) { in dlm_mig_lockres_handler()
1407 spin_lock(&res->spinlock); in dlm_mig_lockres_handler()
1409 res->state |= DLM_LOCK_RES_RECOVERING; in dlm_mig_lockres_handler()
1411 if (res->state & DLM_LOCK_RES_MIGRATING) { in dlm_mig_lockres_handler()
1417 } else if (res->state & DLM_LOCK_RES_RECOVERING) { in dlm_mig_lockres_handler()
1423 spin_unlock(&res->spinlock); in dlm_mig_lockres_handler()
1424 dlm_lockres_put(res); in dlm_mig_lockres_handler()
1427 res->state |= DLM_LOCK_RES_MIGRATING; in dlm_mig_lockres_handler()
1429 spin_unlock(&res->spinlock); in dlm_mig_lockres_handler()
1433 res = dlm_new_lockres(dlm, mres->lockname, mres->lockname_len); in dlm_mig_lockres_handler()
1434 if (!res) in dlm_mig_lockres_handler()
1439 dlm_lockres_get(res); in dlm_mig_lockres_handler()
1443 res->state |= DLM_LOCK_RES_RECOVERING; in dlm_mig_lockres_handler()
1445 res->state |= DLM_LOCK_RES_MIGRATING; in dlm_mig_lockres_handler()
1448 __dlm_insert_lockres(dlm, res); in dlm_mig_lockres_handler()
1454 dlm_lockres_get(res); in dlm_mig_lockres_handler()
1469 spin_lock(&res->spinlock); in dlm_mig_lockres_handler()
1470 res->state &= ~DLM_LOCK_RES_IN_PROGRESS; in dlm_mig_lockres_handler()
1471 spin_unlock(&res->spinlock); in dlm_mig_lockres_handler()
1472 wake_up(&res->wq); in dlm_mig_lockres_handler()
1479 spin_lock(&res->spinlock); in dlm_mig_lockres_handler()
1482 dlm_lockres_grab_inflight_ref(dlm, res); in dlm_mig_lockres_handler()
1492 dlm_change_lockres_owner(dlm, res, dlm->node_num); in dlm_mig_lockres_handler()
1494 spin_unlock(&res->spinlock); in dlm_mig_lockres_handler()
1500 item->u.ml.lockres = res; /* already have a ref */ in dlm_mig_lockres_handler()
1511 dlm_lockres_put(res); in dlm_mig_lockres_handler()
1529 struct dlm_lock_resource *res; in dlm_mig_lockres_worker() local
1536 res = item->u.ml.lockres; in dlm_mig_lockres_worker()
1544 ret = dlm_lockres_master_requery(dlm, res, &real_master); in dlm_mig_lockres_worker()
1553 res->lockname.len, res->lockname.name); in dlm_mig_lockres_worker()
1555 spin_lock(&res->spinlock); in dlm_mig_lockres_worker()
1556 dlm_lockres_drop_inflight_ref(dlm, res); in dlm_mig_lockres_worker()
1557 spin_unlock(&res->spinlock); in dlm_mig_lockres_worker()
1560 real_master, res->lockname.len, in dlm_mig_lockres_worker()
1561 res->lockname.name); in dlm_mig_lockres_worker()
1567 ret = dlm_process_recovery_data(dlm, res, mres); in dlm_mig_lockres_worker()
1575 ret = dlm_finish_migration(dlm, res, mres->master); in dlm_mig_lockres_worker()
1582 if (res) { in dlm_mig_lockres_worker()
1584 dlm_lockres_put(res); in dlm_mig_lockres_worker()
1585 dlm_lockres_put(res); in dlm_mig_lockres_worker()
1593 struct dlm_lock_resource *res, in dlm_lockres_master_requery() argument
1633 ret = dlm_do_master_requery(dlm, res, nodenum, real_master); in dlm_lockres_master_requery()
1650 int dlm_do_master_requery(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, in dlm_do_master_requery() argument
1659 req.namelen = res->lockname.len; in dlm_do_master_requery()
1660 memcpy(req.name, res->lockname.name, res->lockname.len); in dlm_do_master_requery()
1693 struct dlm_lock_resource *res = NULL; in dlm_master_requery_handler() local
1708 res = __dlm_lookup_lockres(dlm, req->name, req->namelen, hash); in dlm_master_requery_handler()
1709 if (res) { in dlm_master_requery_handler()
1710 spin_lock(&res->spinlock); in dlm_master_requery_handler()
1711 master = res->owner; in dlm_master_requery_handler()
1713 int ret = dlm_dispatch_assert_master(dlm, res, in dlm_master_requery_handler()
1717 spin_unlock(&res->spinlock); in dlm_master_requery_handler()
1718 dlm_lockres_put(res); in dlm_master_requery_handler()
1725 __dlm_lockres_grab_inflight_worker(dlm, res); in dlm_master_requery_handler()
1726 spin_unlock(&res->spinlock); in dlm_master_requery_handler()
1730 spin_unlock(&res->spinlock); in dlm_master_requery_handler()
1731 dlm_lockres_put(res); in dlm_master_requery_handler()
1742 dlm_list_num_to_pointer(struct dlm_lock_resource *res, int list_num) in dlm_list_num_to_pointer() argument
1747 ret = &(res->granted); in dlm_list_num_to_pointer()
1779 struct dlm_lock_resource *res, in dlm_process_recovery_data() argument
1804 spin_lock(&res->spinlock); in dlm_process_recovery_data()
1805 dlm_lockres_set_refmap_bit(dlm, res, from); in dlm_process_recovery_data()
1806 spin_unlock(&res->spinlock); in dlm_process_recovery_data()
1814 queue = dlm_list_num_to_pointer(res, ml->list); in dlm_process_recovery_data()
1825 spin_lock(&res->spinlock); in dlm_process_recovery_data()
1827 tmpq = dlm_list_idx_to_ptr(res, j); in dlm_process_recovery_data()
1851 __dlm_print_one_lock_resource(res); in dlm_process_recovery_data()
1861 res->lockname.len, res->lockname.name, in dlm_process_recovery_data()
1871 __dlm_print_one_lock_resource(res); in dlm_process_recovery_data()
1881 j, ml->list, res->lockname.len, in dlm_process_recovery_data()
1882 res->lockname.name); in dlm_process_recovery_data()
1883 __dlm_print_one_lock_resource(res); in dlm_process_recovery_data()
1884 spin_unlock(&res->spinlock); in dlm_process_recovery_data()
1894 spin_unlock(&res->spinlock); in dlm_process_recovery_data()
1909 dlm_lock_attach_lockres(newlock, res); in dlm_process_recovery_data()
1912 BUG_ON(queue != &res->converting); in dlm_process_recovery_data()
1938 memcpy(res->lvb, mres->lvb, DLM_LVB_LEN); in dlm_process_recovery_data()
1944 if (!dlm_lvb_is_empty(res->lvb) && in dlm_process_recovery_data()
1946 memcmp(res->lvb, mres->lvb, DLM_LVB_LEN))) { in dlm_process_recovery_data()
1950 res->lockname.len, in dlm_process_recovery_data()
1951 res->lockname.name, ml->type); in dlm_process_recovery_data()
1954 printk("%02x", res->lvb[i]); in dlm_process_recovery_data()
1959 dlm_print_one_lock_resource(res); in dlm_process_recovery_data()
1962 memcpy(res->lvb, mres->lvb, DLM_LVB_LEN); in dlm_process_recovery_data()
1984 spin_lock(&res->spinlock); in dlm_process_recovery_data()
1990 res->lockname.len, res->lockname.name, in dlm_process_recovery_data()
2001 __dlm_print_one_lock_resource(res); in dlm_process_recovery_data()
2019 res->lockname.len, res->lockname.name, ml->node); in dlm_process_recovery_data()
2020 dlm_lockres_set_refmap_bit(dlm, res, ml->node); in dlm_process_recovery_data()
2023 spin_unlock(&res->spinlock); in dlm_process_recovery_data()
2029 spin_lock(&res->spinlock); in dlm_process_recovery_data()
2030 dlm_lockres_drop_inflight_ref(dlm, res); in dlm_process_recovery_data()
2031 spin_unlock(&res->spinlock); in dlm_process_recovery_data()
2040 struct dlm_lock_resource *res) in dlm_move_lockres_to_recovery_list() argument
2047 assert_spin_locked(&res->spinlock); in dlm_move_lockres_to_recovery_list()
2048 res->state |= DLM_LOCK_RES_RECOVERING; in dlm_move_lockres_to_recovery_list()
2049 if (!list_empty(&res->recovering)) { in dlm_move_lockres_to_recovery_list()
2052 dlm->name, res->lockname.len, res->lockname.name); in dlm_move_lockres_to_recovery_list()
2053 list_del_init(&res->recovering); in dlm_move_lockres_to_recovery_list()
2054 dlm_lockres_put(res); in dlm_move_lockres_to_recovery_list()
2057 dlm_lockres_get(res); in dlm_move_lockres_to_recovery_list()
2058 list_add_tail(&res->recovering, &dlm->reco.resources); in dlm_move_lockres_to_recovery_list()
2062 queue = dlm_list_idx_to_ptr(res, i); in dlm_move_lockres_to_recovery_list()
2069 res->lockname.len, res->lockname.name); in dlm_move_lockres_to_recovery_list()
2070 dlm_revert_pending_convert(res, lock); in dlm_move_lockres_to_recovery_list()
2077 res->lockname.len, res->lockname.name); in dlm_move_lockres_to_recovery_list()
2083 dlm_revert_pending_lock(res, lock); in dlm_move_lockres_to_recovery_list()
2098 res->lockname.len, res->lockname.name); in dlm_move_lockres_to_recovery_list()
2099 dlm_commit_pending_unlock(res, lock); in dlm_move_lockres_to_recovery_list()
2109 res->lockname.len, res->lockname.name); in dlm_move_lockres_to_recovery_list()
2110 dlm_commit_pending_cancel(res, lock); in dlm_move_lockres_to_recovery_list()
2128 struct dlm_lock_resource *res, *next; in dlm_finish_local_lockres_recovery() local
2132 list_for_each_entry_safe(res, next, &dlm->reco.resources, recovering) { in dlm_finish_local_lockres_recovery()
2133 if (res->owner == dead_node) { in dlm_finish_local_lockres_recovery()
2135 dlm->name, res->lockname.len, res->lockname.name, in dlm_finish_local_lockres_recovery()
2136 res->owner, new_master); in dlm_finish_local_lockres_recovery()
2137 list_del_init(&res->recovering); in dlm_finish_local_lockres_recovery()
2138 spin_lock(&res->spinlock); in dlm_finish_local_lockres_recovery()
2141 dlm_change_lockres_owner(dlm, res, new_master); in dlm_finish_local_lockres_recovery()
2142 res->state &= ~DLM_LOCK_RES_RECOVERING; in dlm_finish_local_lockres_recovery()
2143 if (__dlm_lockres_has_locks(res)) in dlm_finish_local_lockres_recovery()
2144 __dlm_dirty_lockres(dlm, res); in dlm_finish_local_lockres_recovery()
2145 spin_unlock(&res->spinlock); in dlm_finish_local_lockres_recovery()
2146 wake_up(&res->wq); in dlm_finish_local_lockres_recovery()
2147 dlm_lockres_put(res); in dlm_finish_local_lockres_recovery()
2157 hlist_for_each_entry(res, bucket, hash_node) { in dlm_finish_local_lockres_recovery()
2158 if (!(res->state & DLM_LOCK_RES_RECOVERING)) in dlm_finish_local_lockres_recovery()
2161 if (res->owner != dead_node && in dlm_finish_local_lockres_recovery()
2162 res->owner != dlm->node_num) in dlm_finish_local_lockres_recovery()
2165 if (!list_empty(&res->recovering)) { in dlm_finish_local_lockres_recovery()
2166 list_del_init(&res->recovering); in dlm_finish_local_lockres_recovery()
2167 dlm_lockres_put(res); in dlm_finish_local_lockres_recovery()
2173 dlm->name, res->lockname.len, res->lockname.name, in dlm_finish_local_lockres_recovery()
2174 res->owner, new_master); in dlm_finish_local_lockres_recovery()
2175 spin_lock(&res->spinlock); in dlm_finish_local_lockres_recovery()
2176 dlm_change_lockres_owner(dlm, res, new_master); in dlm_finish_local_lockres_recovery()
2177 res->state &= ~DLM_LOCK_RES_RECOVERING; in dlm_finish_local_lockres_recovery()
2178 if (__dlm_lockres_has_locks(res)) in dlm_finish_local_lockres_recovery()
2179 __dlm_dirty_lockres(dlm, res); in dlm_finish_local_lockres_recovery()
2180 spin_unlock(&res->spinlock); in dlm_finish_local_lockres_recovery()
2181 wake_up(&res->wq); in dlm_finish_local_lockres_recovery()
2198 struct dlm_lock_resource *res, u8 dead_node) in dlm_revalidate_lvb() argument
2207 assert_spin_locked(&res->spinlock); in dlm_revalidate_lvb()
2209 if (res->owner == dlm->node_num) in dlm_revalidate_lvb()
2221 queue = dlm_list_idx_to_ptr(res, i); in dlm_revalidate_lvb()
2235 res->lockname.len, res->lockname.name, dead_node); in dlm_revalidate_lvb()
2236 memset(res->lvb, 0, DLM_LVB_LEN); in dlm_revalidate_lvb()
2241 struct dlm_lock_resource *res, u8 dead_node) in dlm_free_dead_locks() argument
2251 assert_spin_locked(&res->spinlock); in dlm_free_dead_locks()
2257 list_for_each_entry_safe(lock, next, &res->granted, list) { in dlm_free_dead_locks()
2266 list_for_each_entry_safe(lock, next, &res->converting, list) { in dlm_free_dead_locks()
2275 list_for_each_entry_safe(lock, next, &res->blocked, list) { in dlm_free_dead_locks()
2288 res->lockname.len, res->lockname.name, freed, dead_node); in dlm_free_dead_locks()
2289 if(!test_bit(dead_node, res->refmap)) { in dlm_free_dead_locks()
2292 res->lockname.len, res->lockname.name, freed, dead_node); in dlm_free_dead_locks()
2293 __dlm_print_one_lock_resource(res); in dlm_free_dead_locks()
2295 dlm_lockres_clear_refmap_bit(dlm, res, dead_node); in dlm_free_dead_locks()
2296 } else if (test_bit(dead_node, res->refmap)) { in dlm_free_dead_locks()
2299 res->lockname.len, res->lockname.name, dead_node); in dlm_free_dead_locks()
2300 dlm_lockres_clear_refmap_bit(dlm, res, dead_node); in dlm_free_dead_locks()
2304 __dlm_dirty_lockres(dlm, res); in dlm_free_dead_locks()
2316 struct dlm_lock_resource *res; in dlm_do_local_recovery_cleanup() local
2341 hlist_for_each_entry(res, bucket, hash_node) { in dlm_do_local_recovery_cleanup()
2344 if (dlm_is_recovery_lock(res->lockname.name, in dlm_do_local_recovery_cleanup()
2345 res->lockname.len)) { in dlm_do_local_recovery_cleanup()
2346 spin_lock(&res->spinlock); in dlm_do_local_recovery_cleanup()
2347 list_for_each_entry(lock, &res->granted, list) { in dlm_do_local_recovery_cleanup()
2362 dlm_lockres_clear_refmap_bit(dlm, res, in dlm_do_local_recovery_cleanup()
2364 spin_unlock(&res->spinlock); in dlm_do_local_recovery_cleanup()
2367 spin_lock(&res->spinlock); in dlm_do_local_recovery_cleanup()
2369 dlm_revalidate_lvb(dlm, res, dead_node); in dlm_do_local_recovery_cleanup()
2370 if (res->owner == dead_node) { in dlm_do_local_recovery_cleanup()
2371 if (res->state & DLM_LOCK_RES_DROPPING_REF) { in dlm_do_local_recovery_cleanup()
2374 dlm->name, res->lockname.len, in dlm_do_local_recovery_cleanup()
2375 res->lockname.name); in dlm_do_local_recovery_cleanup()
2378 res); in dlm_do_local_recovery_cleanup()
2380 } else if (res->owner == dlm->node_num) { in dlm_do_local_recovery_cleanup()
2381 dlm_free_dead_locks(dlm, res, dead_node); in dlm_do_local_recovery_cleanup()
2382 __dlm_lockres_calc_usage(dlm, res); in dlm_do_local_recovery_cleanup()
2383 } else if (res->owner == DLM_LOCK_RES_OWNER_UNKNOWN) { in dlm_do_local_recovery_cleanup()
2384 if (test_bit(dead_node, res->refmap)) { in dlm_do_local_recovery_cleanup()
2387 dlm->name, res->lockname.len, in dlm_do_local_recovery_cleanup()
2388 res->lockname.name, dead_node); in dlm_do_local_recovery_cleanup()
2389 dlm_lockres_clear_refmap_bit(dlm, res, dead_node); in dlm_do_local_recovery_cleanup()
2392 spin_unlock(&res->spinlock); in dlm_do_local_recovery_cleanup()
2631 struct dlm_lock_resource *res; in dlm_pick_recovery_master() local
2637 res = dlm_lookup_lockres(dlm, DLM_RECOVERY_LOCK_NAME, in dlm_pick_recovery_master()
2639 if (res) { in dlm_pick_recovery_master()
2640 dlm_print_one_lock_resource(res); in dlm_pick_recovery_master()
2641 dlm_lockres_put(res); in dlm_pick_recovery_master()
2713 struct dlm_lock_resource *res; in dlm_send_begin_reco_message() local
2720 res = dlm_lookup_lockres(dlm, DLM_RECOVERY_LOCK_NAME, in dlm_send_begin_reco_message()
2722 if (res) { in dlm_send_begin_reco_message()
2723 dlm_print_one_lock_resource(res); in dlm_send_begin_reco_message()
2724 dlm_lockres_put(res); in dlm_send_begin_reco_message()