Skip to content
  • Yang Shi's avatar
    tracing, writeback: Replace cgroup path to cgroup ino · a664edb3
    Yang Shi authored
    commit 5634cc2a ("writeback: update writeback
    tracepoints to report cgroup") made writeback tracepoints print out cgroup
    path when CGROUP_WRITEBACK is enabled, but it may trigger the below bug on -rt
    kernel since kernfs_path and kernfs_path_len are called by tracepoints, which
    acquire spin lock that is sleepable on -rt kernel.
    
    BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:930
    in_atomic(): 1, irqs_disabled(): 0, pid: 625, name: kworker/u16:3
    INFO: lockdep is turned off.
    Preemption disabled at:[<ffffffc000374a5c>] wb_writeback+0xec/0x830
    
    CPU: 7 PID: 625 Comm: kworker/u16:3 Not tainted 4.4.1-rt5 #20
    Hardware name: Freescale Layerscape 2085a RDB Board (DT)
    Workqueue: writeback wb_workfn (flush-7:0)
    Call trace:
    [<ffffffc00008d708>] dump_backtrace+0x0/0x200
    [<ffffffc00008d92c>] show_stack+0x24/0x30
    [<ffffffc0007b0f40>] dump_stack+0x88/0xa8
    [<ffffffc000127d74>] ___might_sleep+0x2ec/0x300
    [<ffffffc000d5d550>] rt_spin_lock+0x38/0xb8
    [<ffffffc0003e0548>] kernfs_path_len+0x30/0x90
    [<ffffffc00036b360>] trace_event_raw_event_writeback_work_class+0xe8/0x2e8
    [<ffffffc000374f90>] wb_writeback+0x620/0x830
    [<ffffffc000376224>] wb_workfn+0x61c/0x950
    [<ffffffc000110adc>] process_one_work+0x3ac/0xb30
    [<ffffffc0001112fc>] worker_thread+0x9c/0x7a8
    [<ffffffc00011a9e8>] kthread+0x190/0x1b0
    [<ffffffc000086ca0>] ret_from_fork+0x10/0x30
    
    With unlocked kernfs_* functions, synchronize_sched() has to be called in
    kernfs_rename which could be called in syscall path, but it is problematic.
    So, print out cgroup ino instead of path name, which could be converted to
    path name by userland.
    
    Withouth CGROUP_WRITEBACK enabled, it just prints out root dir. But, root
    dir ino vary from different filesystems, so printing out -1U to indicate
    an invalid cgroup ino.
    
    Link: http://lkml.kernel.org/r/1456996137-8354-1-git-send-email-yang.shi@linaro.org
    
    
    
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarYang Shi <yang.shi@linaro.org>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    a664edb3