Loading fs/ocfs2/dlm/dlmrecovery.c +25 −32 Original line number Diff line number Diff line Loading @@ -2093,6 +2093,9 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm, list_for_each_entry_safe(res, next, &dlm->reco.resources, recovering) { if (res->owner == dead_node) { mlog(0, "%s: res %.*s, Changing owner from %u to %u\n", dlm->name, res->lockname.len, res->lockname.name, res->owner, new_master); list_del_init(&res->recovering); spin_lock(&res->spinlock); /* new_master has our reference from Loading @@ -2114,33 +2117,24 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm, for (i = 0; i < DLM_HASH_BUCKETS; i++) { bucket = dlm_lockres_hash(dlm, i); hlist_for_each_entry(res, hash_iter, bucket, hash_node) { if (res->state & DLM_LOCK_RES_RECOVERING) { if (res->owner == dead_node) { mlog(0, "(this=%u) res %.*s owner=%u " "was not on recovering list, but " "clearing state anyway\n", dlm->node_num, res->lockname.len, res->lockname.name, new_master); } else if (res->owner == dlm->node_num) { mlog(0, "(this=%u) res %.*s owner=%u " "was not on recovering list, " "owner is THIS node, clearing\n", dlm->node_num, res->lockname.len, res->lockname.name, new_master); } else if (!(res->state & DLM_LOCK_RES_RECOVERING)) continue; if (res->owner != dead_node && res->owner != dlm->node_num) continue; if (!list_empty(&res->recovering)) { mlog(0, "%s:%.*s: lockres was " "marked RECOVERING, owner=%u\n", dlm->name, res->lockname.len, res->lockname.name, res->owner); list_del_init(&res->recovering); dlm_lockres_put(res); } spin_lock(&res->spinlock); /* new_master has our reference from * the lock state sent during recovery */ mlog(0, "%s: res %.*s, Changing owner from %u to %u\n", dlm->name, res->lockname.len, res->lockname.name, res->owner, new_master); spin_lock(&res->spinlock); dlm_change_lockres_owner(dlm, res, new_master); res->state &= ~DLM_LOCK_RES_RECOVERING; if (__dlm_lockres_has_locks(res)) Loading @@ -2150,7 +2144,6 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm, } } } } static inline int dlm_lvb_needs_invalidation(struct dlm_lock *lock, int local) { Loading Loading
fs/ocfs2/dlm/dlmrecovery.c +25 −32 Original line number Diff line number Diff line Loading @@ -2093,6 +2093,9 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm, list_for_each_entry_safe(res, next, &dlm->reco.resources, recovering) { if (res->owner == dead_node) { mlog(0, "%s: res %.*s, Changing owner from %u to %u\n", dlm->name, res->lockname.len, res->lockname.name, res->owner, new_master); list_del_init(&res->recovering); spin_lock(&res->spinlock); /* new_master has our reference from Loading @@ -2114,33 +2117,24 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm, for (i = 0; i < DLM_HASH_BUCKETS; i++) { bucket = dlm_lockres_hash(dlm, i); hlist_for_each_entry(res, hash_iter, bucket, hash_node) { if (res->state & DLM_LOCK_RES_RECOVERING) { if (res->owner == dead_node) { mlog(0, "(this=%u) res %.*s owner=%u " "was not on recovering list, but " "clearing state anyway\n", dlm->node_num, res->lockname.len, res->lockname.name, new_master); } else if (res->owner == dlm->node_num) { mlog(0, "(this=%u) res %.*s owner=%u " "was not on recovering list, " "owner is THIS node, clearing\n", dlm->node_num, res->lockname.len, res->lockname.name, new_master); } else if (!(res->state & DLM_LOCK_RES_RECOVERING)) continue; if (res->owner != dead_node && res->owner != dlm->node_num) continue; if (!list_empty(&res->recovering)) { mlog(0, "%s:%.*s: lockres was " "marked RECOVERING, owner=%u\n", dlm->name, res->lockname.len, res->lockname.name, res->owner); list_del_init(&res->recovering); dlm_lockres_put(res); } spin_lock(&res->spinlock); /* new_master has our reference from * the lock state sent during recovery */ mlog(0, "%s: res %.*s, Changing owner from %u to %u\n", dlm->name, res->lockname.len, res->lockname.name, res->owner, new_master); spin_lock(&res->spinlock); dlm_change_lockres_owner(dlm, res, new_master); res->state &= ~DLM_LOCK_RES_RECOVERING; if (__dlm_lockres_has_locks(res)) Loading @@ -2150,7 +2144,6 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm, } } } } static inline int dlm_lvb_needs_invalidation(struct dlm_lock *lock, int local) { Loading