Loading fs/ocfs2/dlm/dlmthread.c +18 −2 Original line number Diff line number Diff line Loading @@ -162,12 +162,28 @@ static int dlm_purge_lockres(struct dlm_ctxt *dlm, spin_lock(&res->spinlock); if (!__dlm_lockres_unused(res)) { spin_unlock(&res->spinlock); mlog(0, "%s:%.*s: tried to purge but not unused\n", dlm->name, res->lockname.len, res->lockname.name); return -ENOTEMPTY; __dlm_print_one_lock_resource(res); spin_unlock(&res->spinlock); BUG(); } if (res->state & DLM_LOCK_RES_MIGRATING) { mlog(0, "%s:%.*s: Delay dropref as this lockres is " "being remastered\n", dlm->name, res->lockname.len, res->lockname.name); /* Re-add the lockres to the end of the purge list */ if (!list_empty(&res->purge)) { list_del_init(&res->purge); list_add_tail(&res->purge, &dlm->purge_list); } spin_unlock(&res->spinlock); return 0; } master = (res->owner == dlm->node_num); if (!master) res->state |= DLM_LOCK_RES_DROPPING_REF; spin_unlock(&res->spinlock); Loading Loading
fs/ocfs2/dlm/dlmthread.c +18 −2 Original line number Diff line number Diff line Loading @@ -162,12 +162,28 @@ static int dlm_purge_lockres(struct dlm_ctxt *dlm, spin_lock(&res->spinlock); if (!__dlm_lockres_unused(res)) { spin_unlock(&res->spinlock); mlog(0, "%s:%.*s: tried to purge but not unused\n", dlm->name, res->lockname.len, res->lockname.name); return -ENOTEMPTY; __dlm_print_one_lock_resource(res); spin_unlock(&res->spinlock); BUG(); } if (res->state & DLM_LOCK_RES_MIGRATING) { mlog(0, "%s:%.*s: Delay dropref as this lockres is " "being remastered\n", dlm->name, res->lockname.len, res->lockname.name); /* Re-add the lockres to the end of the purge list */ if (!list_empty(&res->purge)) { list_del_init(&res->purge); list_add_tail(&res->purge, &dlm->purge_list); } spin_unlock(&res->spinlock); return 0; } master = (res->owner == dlm->node_num); if (!master) res->state |= DLM_LOCK_RES_DROPPING_REF; spin_unlock(&res->spinlock); Loading