aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/dlm/dlmrecovery.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/dlm/dlmrecovery.c')
-rw-r--r--fs/ocfs2/dlm/dlmrecovery.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c
index 773bd32bfd8c..0b5adca1b178 100644
--- a/fs/ocfs2/dlm/dlmrecovery.c
+++ b/fs/ocfs2/dlm/dlmrecovery.c
@@ -787,6 +787,7 @@ static int dlm_request_all_locks(struct dlm_ctxt *dlm, u8 request_from,
787{ 787{
788 struct dlm_lock_request lr; 788 struct dlm_lock_request lr;
789 int ret; 789 int ret;
790 int status;
790 791
791 mlog(0, "\n"); 792 mlog(0, "\n");
792 793
@@ -800,13 +801,15 @@ static int dlm_request_all_locks(struct dlm_ctxt *dlm, u8 request_from,
800 801
801 // send message 802 // send message
802 ret = o2net_send_message(DLM_LOCK_REQUEST_MSG, dlm->key, 803 ret = o2net_send_message(DLM_LOCK_REQUEST_MSG, dlm->key,
803 &lr, sizeof(lr), request_from, NULL); 804 &lr, sizeof(lr), request_from, &status);
804 805
805 /* negative status is handled by caller */ 806 /* negative status is handled by caller */
806 if (ret < 0) 807 if (ret < 0)
807 mlog(ML_ERROR, "%s: Error %d send LOCK_REQUEST to node %u " 808 mlog(ML_ERROR, "%s: Error %d send LOCK_REQUEST to node %u "
808 "to recover dead node %u\n", dlm->name, ret, 809 "to recover dead node %u\n", dlm->name, ret,
809 request_from, dead_node); 810 request_from, dead_node);
811 else
812 ret = status;
810 // return from here, then 813 // return from here, then
811 // sleep until all received or error 814 // sleep until all received or error
812 return ret; 815 return ret;
@@ -2328,6 +2331,14 @@ static void dlm_do_local_recovery_cleanup(struct dlm_ctxt *dlm, u8 dead_node)
2328 } else if (res->owner == dlm->node_num) { 2331 } else if (res->owner == dlm->node_num) {
2329 dlm_free_dead_locks(dlm, res, dead_node); 2332 dlm_free_dead_locks(dlm, res, dead_node);
2330 __dlm_lockres_calc_usage(dlm, res); 2333 __dlm_lockres_calc_usage(dlm, res);
2334 } else if (res->owner == DLM_LOCK_RES_OWNER_UNKNOWN) {
2335 if (test_bit(dead_node, res->refmap)) {
2336 mlog(0, "%s:%.*s: dead node %u had a ref, but had "
2337 "no locks and had not purged before dying\n",
2338 dlm->name, res->lockname.len,
2339 res->lockname.name, dead_node);
2340 dlm_lockres_clear_refmap_bit(dlm, res, dead_node);
2341 }
2331 } 2342 }
2332 spin_unlock(&res->spinlock); 2343 spin_unlock(&res->spinlock);
2333 } 2344 }