1. 19 Aug, 2015 11 commits
  2. 07 Aug, 2015 1 commit
  3. 06 Aug, 2015 2 commits
    • Ming Lei's avatar
      blk-mq: fix CPU hotplug handling · df0e5109
      Ming Lei authored
      [ Upstream commit 2a34c087 ]
      
      hctx->tags has to be set as NULL in case that it is to be unmapped
      no matter if set->tags[hctx->queue_num] is NULL or not in blk_mq_map_swqueue()
      because shared tags can be freed already from another request queue.
      
      The same situation has to be considered during handling CPU online too.
      Unmapped hw queue can be remapped after CPU topo is changed, so we need
      to allocate tags for the hw queue in blk_mq_map_swqueue(). Then tags
      allocation for hw queue can be removed in hctx cpu online notifier, and it
      is reasonable to do that after mapping is updated.
      
      Cc: <stable@vger.kernel.org>
      Reported-by: default avatarDongsu Park <dongsu.park@profitbricks.com>
      Tested-by: default avatarDongsu Park <dongsu.park@profitbricks.com>
      Signed-off-by: default avatarMing Lei <ming.lei@canonical.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      df0e5109
    • Mike Christie's avatar
      SCSI: add 1024 max sectors black list flag · bda69f1a
      Mike Christie authored
      [ Upstream commit 35e9a9f9 ]
      
      This works around a issue with qnap iscsi targets not handling large IOs
      very well.
      
      The target returns:
      
      VPD INQUIRY: Block limits page (SBC)
        Maximum compare and write length: 1 blocks
        Optimal transfer length granularity: 1 blocks
        Maximum transfer length: 4294967295 blocks
        Optimal transfer length: 4294967295 blocks
        Maximum prefetch, xdread, xdwrite transfer length: 0 blocks
        Maximum unmap LBA count: 8388607
        Maximum unmap block descriptor count: 1
        Optimal unmap granularity: 16383
        Unmap granularity alignment valid: 0
        Unmap granularity alignment: 0
        Maximum write same length: 0xffffffff blocks
        Maximum atomic transfer length: 0
        Atomic alignment: 0
        Atomic transfer length granularity: 0
      
      and it is *sometimes* able to handle at least one IO of size up to 8 MB. We
      have seen in traces where it will sometimes work, but other times it
      looks like it fails and it looks like it returns failures if we send
      multiple large IOs sometimes. Also it looks like it can return 2 different
      errors. It will sometimes send iscsi reject errors indicating out of
      resources or it will send invalid cdb illegal requests check conditions.
      And then when it sends iscsi rejects it does not seem to handle retries
      when there are command sequence holes, so I could not just add code to
      try and gracefully handle that error code.
      
      The problem is that we do not have a good contact for the company,
      so we are not able to determine under what conditions it returns
      which error and why it sometimes works.
      
      So, this patch just adds a new black list flag to set targets like this to
      the old max safe sectors of 1024. The max_hw_sectors changes added in 3.19
      caused this regression, so I also ccing stable.
      Reported-by: default avatarChristian Hesse <list@eworm.de>
      Signed-off-by: default avatarMike Christie <michaelc@cs.wisc.edu>
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Odin.com>
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      bda69f1a
  4. 04 Aug, 2015 26 commits