NVMe IO error due to abort..

Jens Axboe axboe at kernel.dk
Fri Feb 24 13:35:57 PST 2017


On 02/24/2017 02:16 PM, Jens Axboe wrote:
> 
> On Feb 24, 2017, at 2:09 PM, Linus Torvalds <torvalds at linux-foundation.org> wrote:
>>
>> On Fri, Feb 24, 2017 at 1:02 PM, Linus Torvalds
>> <torvalds at linux-foundation.org> wrote:
>>>
>>> And it was just after the kernel compile finished.
>>
>> Timing-wise, it might be the IO flushing after the biggest final link
>> or something. Still, that's really not all that heavy IO, but it might
>> trigger something.
>>
>> Maybe it's even the same use-after-free with md that Bart has seen.
>> That's new to this merge window, isn't it?
> 
> Yes, that one is a regression in this window. And you are using dm...
> You could try and pull my for-linus and see if that changes anything
> for you?

BTW, when/if you do that, note that you would now have to set
mq-deadline as the scheduler. Might be worth running with the default
first, then switch to mq-deadline to see if it reproduces, once you are
confident that it didn't trigger without.

# echo mq-deadline > /sys/block/nvme0n1/queue/scheduler

And below is the branch info. I was going to send this in pretty soon
anyway, but lets see what happens.


  git://git.kernel.dk/linux-block.git for-linus


----------------------------------------------------------------
Andy Lutomirski (2):
      nvme: Add a quirk mechanism that uses identify_ctrl
      nvme: Enable autonomous power state transitions

Christoph Hellwig (1):
      scsi: zero per-cmd driver data before each I/O

Christophe JAILLET (1):
      nvmet-rdma: Fix error handling

Colin Ian King (1):
      nvme: admin-cmd: fix spelling mistake: "Counld" -> "Could"

Daniel Roschka (1):
      nvme: detect NVMe controller in recent MacBooks

James Smart (2):
      nvmet_fc: cleanup of abort flag processing in fcp_op_done
      nvme-fc: don't bother to validate ioccsz and iorcsz

Jan Kara (3):
      block: Move bdev_unhash_inode() after invalidate_partition()
      block: Unhash also block device inode for the whole device
      block: Revalidate i_bdev reference in bd_aquire()

Jens Axboe (2):
      block: get rid of blk-mq default scheduler choice Kconfig entries
      dm-rq: don't dereference request payload after ending request

Johannes Thumshirn (1):
      nvme: make nvmf_register_transport require a create_ctrl callback

Jon Derrick (4):
      block/sed: Use ssize_t on atom parsers to return errors
      block/sed: Add helper to qualify response tokens
      block/sed: Check received header lengths
      block/sed: Embed function data into the function sequence

Josef Bacik (3):
      nbd: cleanup ioctl handling
      nbd: set the logical and physical blocksize properly
      nbd: cleanup workqueue on error properly

Keith Busch (3):
      nvme/pci: Disable on removal when disconnected
      nvme/core: Fix race kicking freed request_queue
      nvme/pci: No special case for queue busy on IO

Max Gurtovoy (5):
      nvmet: avoid dereferencing nvmet_req
      nvme: add semicolon in nvme_command setting
      nvme-rdma: move nvme cm status helper to .h file
      nvmet-rdma: use nvme cm status helper
      nvme-rdma: add support for host_traddr

Omar Sandoval (3):
      scsi_transport_sas: fix BSG ioctl memory corruption
      blk-mq: use sbq wait queues instead of restart for driver tags
      blk-mq-sched: separate mark hctx and queue restart operations

Parav Pandit (1):
      nvme: Use CNS as 8-bit field and avoid endianness conversion

Sagi Grimberg (2):
      nvmet: Make cntlid globally unique
      nvme: Make controller state visible via sysfs

Scott Bauer (3):
      block/sed-opal: Introduce free_opal_dev to free the structure and clean up state
      nvme/pci: re-check security protocol support after reset
      block/sed-opal: Propagate original error message to userland.

Tobin C. Harding (3):
      cciss: Fix checkpatch TRAILING_WHITESPACE
      cciss: Fix checkpatch OPEN_BRACE
      cciss: Remove kmalloc cast

 block/Kconfig.iosched             |  44 ---
 block/blk-mq-sched.c              |  29 +-
 block/blk-mq-sched.h              |  26 +-
 block/blk-mq.c                    |  64 ++++-
 block/elevator.c                  |  19 +-
 block/genhd.c                     |   4 +-
 block/sed-opal.c                  | 577 +++++++++++++++++---------------------
 drivers/block/cciss_scsi.c        | 182 ++++++------
 drivers/block/nbd.c               | 307 ++++++++++----------
 drivers/md/dm-rq.c                |   6 +-
 drivers/nvme/host/core.c          | 257 ++++++++++++++++-
 drivers/nvme/host/fabrics.c       |   7 +-
 drivers/nvme/host/fabrics.h       |   2 +-
 drivers/nvme/host/fc.c            |  15 +-
 drivers/nvme/host/nvme.h          |  12 +
 drivers/nvme/host/pci.c           |  27 +-
 drivers/nvme/host/rdma.c          |  48 ++--
 drivers/nvme/target/admin-cmd.c   |   4 +-
 drivers/nvme/target/core.c        |  10 +-
 drivers/nvme/target/discovery.c   |   4 +-
 drivers/nvme/target/fabrics-cmd.c |   6 +-
 drivers/nvme/target/fc.c          |   8 +-
 drivers/nvme/target/loop.c        |   3 +-
 drivers/nvme/target/nvmet.h       |   1 -
 drivers/nvme/target/rdma.c        |   7 +-
 drivers/scsi/scsi_lib.c           |   2 +-
 drivers/scsi/scsi_transport_sas.c |  24 +-
 fs/block_dev.c                    |  11 +-
 include/linux/blk-mq.h            |   2 +
 include/linux/nvme-rdma.h         |  24 ++
 include/linux/nvme.h              |  10 +-
 include/linux/sed-opal.h          |   5 +
 32 files changed, 986 insertions(+), 761 deletions(-)

-- 
Jens Axboe



More information about the Linux-nvme mailing list