nvme-6.3: blktests nvme/45 lockdep warning

Daniel Wagner dwagner at suse.de
Mon Jan 30 03:08:02 PST 2023


Hi,

while trying to get a baseline run with blktest against the current nvme-6.3
branch I got a lockdep warning. I haven't really looked into it yet. I
as that Shinichiro has fixed a bunch of those in v5.19. Thought this one
looks slightly different.

 ============================================
 WARNING: possible recursive locking detected
 6.2.0-rc4+ #1 Not tainted
 --------------------------------------------
 kworker/u16:7/69 is trying to acquire lock:
 ffff902d52e65548 ((wq_completion)nvme-wq){+.+.}-{0:0}, at: start_flush_work+0x2c5/0x380

 but task is already holding lock:
 ffff902d52e65548 ((wq_completion)nvme-wq){+.+.}-{0:0}, at: process_one_work+0x210/0x410

 other info that might help us debug this:
  Possible unsafe locking scenario:

        CPU0
        ----
   lock((wq_completion)nvme-wq);
   lock((wq_completion)nvme-wq);

  *** DEADLOCK ***

  May be due to missing lock nesting notation

 3 locks held by kworker/u16:7/69:
  #0: ffff902d52e65548 ((wq_completion)nvme-wq){+.+.}-{0:0}, at: process_one_work+0x210/0x410
  #1: ffffa9d34028fe68 ((work_completion)(&ctrl->dhchap_auth_work)){+.+.}-{0:0}, at: process_one_work+0x236/0x410
  #2: ffffffffa0d768e0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x0/0x30

 stack backtrace:
 CPU: 0 PID: 69 Comm: kworker/u16:7 Not tainted 6.2.0-rc4+ #1 c9afca57e89c2aa3234427c2cd6cd4dd2984ae8c
 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
 Workqueue: nvme-wq nvme_ctrl_auth_work [nvme_core]
 Call Trace:
  <TASK>
  dump_stack_lvl+0x5a/0x80
  validate_chain+0x1e02/0x2730
  ? lockdep_unlock+0x51/0xc0
  ? stack_trace_save+0x48/0x70
  ? lockdep_unlock+0x51/0xc0
  ? validate_chain+0x7c8/0x2730
  ? __lock_acquire+0x8f7/0xbc0
  __lock_acquire+0x8f7/0xbc0
  ? lock_is_held_type+0x8b/0x110
  lock_acquire+0xb0/0x180
  ? start_flush_work+0x2c5/0x380
  ? lock_release+0xf7/0x400
  start_flush_work+0x2e5/0x380
  ? start_flush_work+0x2c5/0x380
  __flush_work+0x79/0xc0
  ? start_flush_work+0x380/0x380
  nvme_ctrl_auth_work+0x7e/0x240 [nvme_core d5def95a27d83838db4779d3aac9ae3cccc50795]
  process_one_work+0x26a/0x410
  worker_thread+0x21d/0x490
  ? _raw_spin_unlock_irqrestore+0x32/0x50
  ? rcu_lock_release+0x20/0x20
  kthread+0xe1/0x100
  ? kthread_blkcg+0x30/0x30
  ret_from_fork+0x1f/0x30
  </TASK>

Thanks,
Daniel



More information about the Linux-nvme mailing list