ocfs2: add uuid to ocfs2 thread name for problem analysis
PATCH RESEND v2 1/1 ocfs2: add uuid to ocfs2 thread name for problem analysis
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.
--- fs/ocfs2/dlm/dlmdomain.c | 4 +++- fs/ocfs2/dlm/dlmrecovery.c | 2 +- fs/ocfs2/dlm/dlmthread.c | 3 ++- fs/ocfs2/dlmglue.c | 3 ++- fs/ocfs2/journal.c | 4 ++-- 5 files changed, 10 insertions(+), 6 deletions(-)
fs/ocfs2/dlm/dlmdomain.c +3 -1
@@ -1860,6 +1860,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);
@@ -1889,7 +1890,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);
fs/ocfs2/dlm/dlmrecovery.c +1 -1
@@ -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 ;
fs/ocfs2/dlm/dlmthread.c +2 -1
@@ -483,7 +483,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 ;
fs/ocfs2/dlmglue.c +2 -1
@@ -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 ;
fs/ocfs2/journal.c +2 -2
@@ -1074,7 +1074,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 ;
@@ -1491,7 +1491,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 ;
Signature · 1 line
1.8.4.3
PATCH RESEND v2 1/1 ocfs2: add uuid to ocfs2 thread name for problem analysis
Hello Joseph,
It make sense to make the thread name unique, here are some comments inline.
Quoted 30 lines
Quoted 1 line
Quoted 1 line
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 <[email protected]>--- fs/ocfs2/dlm/dlmdomain.c | 4 +++- fs/ocfs2/dlm/dlmrecovery.c | 2 +- fs/ocfs2/dlm/dlmthread.c | 3 ++- fs/ocfs2/dlmglue.c | 3 ++- fs/ocfs2/journal.c | 4 ++-- 5 files changed, 10 insertions(+), 6 deletions(-)fs/ocfs2/dlm/dlmdomain.c +1
-0@@ -1860,6 +1860,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);
fs/ocfs2/dlm/dlmdomain.c static int dlm_join_domain(struct dlm_ctxt *dlm) · line 1893
Quoted 5 lines
fs/ocfs2/dlm/dlmdomain.c +1
-1@@ -1889,7 +1890,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);
If the dm->name is too length, the wq_name will be filled fully without the trailing '\0', then pass the wq_name to create_singlethread_workqueue is OK? Maybe the code looks like,
snprintf(wq_name, O2NM_MAX_NAME_LEN, "dlm_wq-%s", dlm->name); wq_name[O2NM_MAX_NAME_LEN - 1] = '\0';
Quoted 36 lines
fs/ocfs2/dlm/dlmdomain.c +1
-0+ dlm->dlm_worker =create_singlethread_workqueue (wq_name);if (!dlm->dlm_worker) { status = -ENOMEM ;mlog_errno (status);fs/ocfs2/dlm/dlmrecovery.c +1
-1@@ -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 ;fs/ocfs2/dlm/dlmthread.c +2
-1@@ -483,7 +483,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 ;fs/ocfs2/dlmglue.c +0
-0
fs/ocfs2/dlmglue.c int ocfs2_dlm_init(struct ocfs2_super *osb) · line 3001
Quoted 5 lines
fs/ocfs2/dlmglue.c +1
-1@@ -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",
uuid_str looks a little long, e.g. 27F06FE897C742D1B2FD435D477B458E,
If use th full string to pack a thread name, the name looks too long, I just suggestion to use the first 6 characters. The first 6 characters should be unique in a machine, will not be conflicted between a few ocfs2 mountings.
Quoted 36 lines
fs/ocfs2/dlmglue.c +1
-0+ osb->uuid_str);if (IS_ERR (osb->dc_task)) { status =PTR_ERR (osb->dc_task); osb->dc_task =NULL ;fs/ocfs2/journal.c +1
-1@@ -1074,7 +1074,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);fs/ocfs2/journal.c +1
-1osb->commit_task =NULL ;@@ -1491,7 +1491,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;Signature · 7 lines
1.8.4.3 _______________________________________________ Ocfs2-devel mailing list Ocfs2-devel at oss.oracle.com https://oss.oracle.com/mailman/listinfo/ocfs2-devel
PATCH RESEND v2 1/1 ocfs2: add uuid to ocfs2 thread name for problem analysis
Hi Gang,
You worry won't exist. kthread_create will take care of it.
Thanks,
Joseph
Quoted 129 lines · Gang He
Hello Joseph,
It make sense to make the thread name unique, here are some comments inline.
Quoted 30 lines
Quoted 1 line
Quoted 1 line
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 <[email protected]>--- fs/ocfs2/dlm/dlmdomain.c | 4 +++- fs/ocfs2/dlm/dlmrecovery.c | 2 +- fs/ocfs2/dlm/dlmthread.c | 3 ++- fs/ocfs2/dlmglue.c | 3 ++- fs/ocfs2/journal.c | 4 ++-- 5 files changed, 10 insertions(+), 6 deletions(-)fs/ocfs2/dlm/dlmdomain.c +1
-0@@ -1860,6 +1860,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);fs/ocfs2/dlm/dlmdomain.c static int dlm_join_domain(struct dlm_ctxt *dlm) · line 1893
Quoted 5 lines
fs/ocfs2/dlm/dlmdomain.c +1
-1@@ -1889,7 +1890,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);If the
dm->nameis too length, thewq_namewill be filled fully without the trailing '\0', then pass thewq_nametocreate_singlethread_workqueueis OK? Maybe the code looks like,snprintf(wq_name, O2NM_MAX_NAME_LEN, "dlm_wq-%s", dlm->name); wq_name[O2NM_MAX_NAME_LEN - 1] = '\0';Quoted 36 lines
fs/ocfs2/dlm/dlmdomain.c +1
-0+ dlm->dlm_worker =create_singlethread_workqueue (wq_name);if (!dlm->dlm_worker) { status = -ENOMEM ;mlog_errno (status);fs/ocfs2/dlm/dlmrecovery.c +1
-1@@ -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 ;fs/ocfs2/dlm/dlmthread.c +2
-1@@ -483,7 +483,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 ;fs/ocfs2/dlmglue.c +0
-0fs/ocfs2/dlmglue.c int ocfs2_dlm_init(struct ocfs2_super *osb) · line 3001
Quoted 5 lines
fs/ocfs2/dlmglue.c +1
-1@@ -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",
uuid_strlooks a little long, e.g. 27F06FE897C742D1B2FD435D477B458E,
If use th full string to pack a thread name, the name looks too long, I just suggestion to use the first 6 characters. The first 6 characters should be unique in a machine, will not be conflicted between a few ocfs2 mountings.Quoted 27 lines
fs/ocfs2/dlmglue.c +1
-0+ osb->uuid_str);if (IS_ERR (osb->dc_task)) { status =PTR_ERR (osb->dc_task); osb->dc_task =NULL ;fs/ocfs2/journal.c +1
-1@@ -1074,7 +1074,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);fs/ocfs2/journal.c +1
-1osb->commit_task =NULL ;@@ -1491,7 +1491,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));Quoted 9 lines
osb->recovery_thread_task= NULL;Signature · 7 lines
1.8.4.3 _______________________________________________ Ocfs2-devel mailing list Ocfs2-devel at oss.oracle.com https://oss.oracle.com/mailman/listinfo/ocfs2-devel.