These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / fs / ocfs2 / dlmglue.c
index 23157e4..b002acf 100644 (file)
@@ -1390,6 +1390,7 @@ static int __ocfs2_cluster_lock(struct ocfs2_super *osb,
        unsigned int gen;
        int noqueue_attempted = 0;
        int dlm_locked = 0;
+       int kick_dc = 0;
 
        if (!(lockres->l_flags & OCFS2_LOCK_INITIALIZED)) {
                mlog_errno(-EINVAL);
@@ -1524,7 +1525,12 @@ update_holders:
 unlock:
        lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING);
 
+       /* ocfs2_unblock_lock reques on seeing OCFS2_LOCK_UPCONVERT_FINISHING */
+       kick_dc = (lockres->l_flags & OCFS2_LOCK_BLOCKED);
+
        spin_unlock_irqrestore(&lockres->l_lock, flags);
+       if (kick_dc)
+               ocfs2_wake_downconvert_thread(osb);
 out:
        /*
         * This is helping work around a lock inversion between the page lock
@@ -2998,7 +3004,8 @@ int ocfs2_dlm_init(struct ocfs2_super *osb)
        }
 
        /* launch downconvert thread */
-       osb->dc_task = kthread_run(ocfs2_downconvert_thread, osb, "ocfs2dc");
+       osb->dc_task = kthread_run(ocfs2_downconvert_thread, osb, "ocfs2dc-%s",
+                       osb->uuid_str);
        if (IS_ERR(osb->dc_task)) {
                status = PTR_ERR(osb->dc_task);
                osb->dc_task = NULL;
@@ -3035,8 +3042,6 @@ local:
        ocfs2_orphan_scan_lock_res_init(&osb->osb_orphan_scan.os_lockres, osb);
 
        osb->cconn = conn;
-
-       status = 0;
 bail:
        if (status < 0) {
                ocfs2_dlm_shutdown_debug(osb);