Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'block-6.7-2023-12-22' of git://git.kernel.dk/linux

Pull block fixes from Jens Axboe:
"Just an NVMe pull request this time, with a fix for bad sleeping
context, and a revert of a patch that caused some trouble"

* tag 'block-6.7-2023-12-22' of git://git.kernel.dk/linux:
nvme-pci: fix sleeping function called from interrupt context
Revert "nvme-fc: fix race between error recovery and creating association"

+7 -17
+2 -1
drivers/nvme/host/core.c
··· 4137 4137 struct nvme_ctrl, fw_act_work); 4138 4138 unsigned long fw_act_timeout; 4139 4139 4140 + nvme_auth_stop(ctrl); 4141 + 4140 4142 if (ctrl->mtfa) 4141 4143 fw_act_timeout = jiffies + 4142 4144 msecs_to_jiffies(ctrl->mtfa * 100); ··· 4194 4192 * firmware activation. 4195 4193 */ 4196 4194 if (nvme_change_ctrl_state(ctrl, NVME_CTRL_RESETTING)) { 4197 - nvme_auth_stop(ctrl); 4198 4195 requeue = false; 4199 4196 queue_work(nvme_wq, &ctrl->fw_act_work); 4200 4197 }
+5 -16
drivers/nvme/host/fc.c
··· 2548 2548 * the controller. Abort any ios on the association and let the 2549 2549 * create_association error path resolve things. 2550 2550 */ 2551 - enum nvme_ctrl_state state; 2552 - unsigned long flags; 2553 - 2554 - spin_lock_irqsave(&ctrl->lock, flags); 2555 - state = ctrl->ctrl.state; 2556 - if (state == NVME_CTRL_CONNECTING) { 2557 - set_bit(ASSOC_FAILED, &ctrl->flags); 2558 - spin_unlock_irqrestore(&ctrl->lock, flags); 2551 + if (ctrl->ctrl.state == NVME_CTRL_CONNECTING) { 2559 2552 __nvme_fc_abort_outstanding_ios(ctrl, true); 2553 + set_bit(ASSOC_FAILED, &ctrl->flags); 2560 2554 dev_warn(ctrl->ctrl.device, 2561 2555 "NVME-FC{%d}: transport error during (re)connect\n", 2562 2556 ctrl->cnum); 2563 2557 return; 2564 2558 } 2565 - spin_unlock_irqrestore(&ctrl->lock, flags); 2566 2559 2567 2560 /* Otherwise, only proceed if in LIVE state - e.g. on first error */ 2568 - if (state != NVME_CTRL_LIVE) 2561 + if (ctrl->ctrl.state != NVME_CTRL_LIVE) 2569 2562 return; 2570 2563 2571 2564 dev_warn(ctrl->ctrl.device, ··· 3173 3180 else 3174 3181 ret = nvme_fc_recreate_io_queues(ctrl); 3175 3182 } 3176 - 3177 - spin_lock_irqsave(&ctrl->lock, flags); 3178 3183 if (!ret && test_bit(ASSOC_FAILED, &ctrl->flags)) 3179 3184 ret = -EIO; 3180 - if (ret) { 3181 - spin_unlock_irqrestore(&ctrl->lock, flags); 3185 + if (ret) 3182 3186 goto out_term_aen_ops; 3183 - } 3187 + 3184 3188 changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_LIVE); 3185 - spin_unlock_irqrestore(&ctrl->lock, flags); 3186 3189 3187 3190 ctrl->ctrl.nr_reconnects = 0; 3188 3191