• Tejun Heo's avatar
    workqueue: Refactor worker ID formatting and make wq_worker_comm() use full ID string · 2a1b02bc
    Tejun Heo authored
    Currently, worker ID formatting is open coded in create_worker(),
    init_rescuer() and worker_thread() (for %WORKER_DIE case). The formatted ID
    is saved into task->comm and wq_worker_comm() uses it as the base name to
    append extra information to when generating the name to be shown to
    userspace.
    
    However, TASK_COMM_LEN is only 16 leading to badly truncated names for
    rescuers. For example, the rescuer for the inet_frag_wq workqueue becomes:
    
      $ ps -ef | grep '[k]worker/R-inet'
      root         483       2  0 Apr26 ?        00:00:00 [kworker/R-inet_]
    
    Even for non-rescue workers, it's easy to run over 15 characters on
    moderately large machines.
    
    Fit it by consolidating worker ID formatting into a new helper
    format_worker_id() and calling it from wq_worker_comm() to obtain the
    untruncated worker ID string.
    
      $ ps -ef | grep '[k]worker/R-inet'
      root          60       2  0 12:10 ?        00:00:00 [kworker/R-inet_frag_wq]
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-and-tested-by: default avatarJan Engelhardt <jengelh@inai.de>
    Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    2a1b02bc
workqueue.c 224 KB