История изменений
      
        Исправление
      kirk_johnson,
      
        (текущая версия)
      :
    
Плюс, у тебя spin_lock_irq() в hidden_queue_rq(). Я хз почему ты не хочешь, следуя логике mq, сделать lockless структуру (привязать список запросов к CPU и просто вырубать preempt, вставлять в список и врубать preempt обратно), но суть в том, что возможно тебе нужен spin_lock_irqsave() в этом контексте.
И complete у тебя довольно странный. Вместо blk_mq_end_io() вроде как стоит позвать blk_mq_complete_request().
      
        Исправление
      kirk_johnson,
      :
    
Плюс, у тебя spin_lock_irq() в hidden_queue_rq(). Я хз почему ты не хочешь, следуя логике mq, сделать lockless структуру (привязать список запросов к CPU и просто вырубать preempt, вставлять в список и врубать preempt обратно), но суть в том, что возможно тебе нужен spin_lock_irqsave() в этом контексте.
      
        Исходная версия
      kirk_johnson,
      :
    
Плюс, у тебя spin_lock_irq() в hidden_queue_rq(). Я хз почему ты не хочешь, следуя логике mq сделать lockless структуру (привязать список запросов к CPU и просто вырубать preempt, вставлять в список и врубать preempt обратно), но суть в том, что возможно тебе нужен spin_lock_irqsave() в этом контексте.