ocfs2: add uuid to ocfs2 thread name for problem analysis
authorJoseph Qi <joseph.qi@huawei.com>
Fri, 6 Nov 2015 02:44:13 +0000 (18:44 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 6 Nov 2015 03:34:48 +0000 (19:34 -0800)
A node can mount multiple ocfs2 volumes.  And if thread names are same for
each volume/domain, it will bring inconvenience when analyzing problems
because we have to identify which volume/domain the messages belong to.

Since thread name will be printed to messages, so add volume uuid or dlm
name to thread name can benefit problem analysis.

Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Gang He <ghe@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ocfs2/dlm/dlmdomain.c
fs/ocfs2/dlm/dlmrecovery.c
fs/ocfs2/dlm/dlmthread.c
fs/ocfs2/dlmglue.c
fs/ocfs2/journal.c

index 6918f30..2ee7fe7 100644 (file)
@@ -1866,6 +1866,7 @@ static int dlm_join_domain(struct dlm_ctxt *dlm)
        int status;
        unsigned int backoff;
        unsigned int total_backoff = 0;
+       char wq_name[O2NM_MAX_NAME_LEN];
 
        BUG_ON(!dlm);
 
@@ -1895,7 +1896,8 @@ static int dlm_join_domain(struct dlm_ctxt *dlm)
                goto bail;
        }
 
-       dlm->dlm_worker = create_singlethread_workqueue("dlm_wq");
+       snprintf(wq_name, O2NM_MAX_NAME_LEN, "dlm_wq-%s", dlm->name);
+       dlm->dlm_worker = create_singlethread_workqueue(wq_name);
        if (!dlm->dlm_worker) {
                status = -ENOMEM;
                mlog_errno(status);
index 58eaa5c..9e4f862 100644 (file)
@@ -205,7 +205,7 @@ int dlm_launch_recovery_thread(struct dlm_ctxt *dlm)
        mlog(0, "starting dlm recovery thread...\n");
 
        dlm->dlm_reco_thread_task = kthread_run(dlm_recovery_thread, dlm,
-                                               "dlm_reco_thread");
+                       "dlm_reco-%s", dlm->name);
        if (IS_ERR(dlm->dlm_reco_thread_task)) {
                mlog_errno(PTR_ERR(dlm->dlm_reco_thread_task));
                dlm->dlm_reco_thread_task = NULL;
index 2e5e6d5..c5f6c24 100644 (file)
@@ -493,7 +493,8 @@ int dlm_launch_thread(struct dlm_ctxt *dlm)
 {
        mlog(0, "Starting dlm_thread...\n");
 
-       dlm->dlm_thread_task = kthread_run(dlm_thread, dlm, "dlm_thread");
+       dlm->dlm_thread_task = kthread_run(dlm_thread, dlm, "dlm-%s",
+                       dlm->name);
        if (IS_ERR(dlm->dlm_thread_task)) {
                mlog_errno(PTR_ERR(dlm->dlm_thread_task));
                dlm->dlm_thread_task = NULL;
index 1c91103..20276e3 100644 (file)
@@ -2998,7 +2998,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;
index 04d6303..13534f4 100644 (file)
@@ -1090,7 +1090,7 @@ int ocfs2_journal_load(struct ocfs2_journal *journal, int local, int replayed)
        /* Launch the commit thread */
        if (!local) {
                osb->commit_task = kthread_run(ocfs2_commit_thread, osb,
-                                              "ocfs2cmt");
+                               "ocfs2cmt-%s", osb->uuid_str);
                if (IS_ERR(osb->commit_task)) {
                        status = PTR_ERR(osb->commit_task);
                        osb->commit_task = NULL;
@@ -1507,7 +1507,7 @@ void ocfs2_recovery_thread(struct ocfs2_super *osb, int node_num)
                goto out;
 
        osb->recovery_thread_task =  kthread_run(__ocfs2_recovery_thread, osb,
-                                                "ocfs2rec");
+                       "ocfs2rec-%s", osb->uuid_str);
        if (IS_ERR(osb->recovery_thread_task)) {
                mlog_errno((int)PTR_ERR(osb->recovery_thread_task));
                osb->recovery_thread_task = NULL;