06 Jan, 2015

1 commit

  • Commit e05fe29248 (qla2xxx: Honor FCP_RSP retry delay timer field.)
    causes systems to busy-wait for about 3 minutes after boot prior to
    detecting SAN disks.

    During this wait period one kworker is running full-time
    (though /proc//stack has no useful data). Another kworker is
    waiting for IO to complete during that whole time period.

    Looking at drivers/scsi/qla2xxx/qla_os.c, fcport->retry_delay_timestamp
    has a special value of 0 though that 0 value forces system to wait when
    jiffies is very large value (e.g. 4294952605 - "negative" value when
    signed on 32bit systems).

    Signed-off-by: Bruno Prémont
    Acked-by: Chad Dupuis
    Signed-off-by: Christoph Hellwig

    Bruno Prémont
     

04 Dec, 2014

1 commit

  • Since we got rid of ordered tag support in 2010 the prime use case of
    switching on and off ordered tags has been obsolete. The other function
    of enabling/disabling tagging entirely has only been correctly implemented
    by the 53c700 driver and isn't generally useful.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Bart Van Assche
    Reviewed-by: Martin K. Petersen

    Christoph Hellwig
     

24 Nov, 2014

2 commits

  • Drop the now unused reason argument from the ->change_queue_depth method.
    Also add a return value to scsi_adjust_queue_depth, and rename it to
    scsi_change_queue_depth now that it can be used as the default
    ->change_queue_depth implementation.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Mike Christie
    Reviewed-by: Hannes Reinecke

    Christoph Hellwig
     
  • All drivers use the implementation for ramping the queue up and down, so
    instead of overloading the change_queue_depth method call the
    implementation diretly if the driver opts into it by setting the
    track_queue_depth flag in the host template.

    Note that a few drivers validated the new queue depth in their
    change_queue_depth method, but as we never go over the queue depth
    set during slave_configure or the sysfs file this isn't nessecary
    and can safely be removed.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Mike Christie
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Venkatesh Srinivas

    Christoph Hellwig
     

12 Nov, 2014

4 commits

  • Remove the tagged argument from scsi_adjust_queue_depth, and just let it
    handle the queue depth. For most drivers those two are fairly separate,
    given that most modern drivers don't care about the SCSI "tagged" status
    of a command at all, and many old drivers allow queuing of multiple
    untagged commands in the driver.

    Instead we start out with the ->simple_tags flag set before calling
    ->slave_configure, which is how all drivers actually looking at
    ->simple_tags except for one worke anyway. The one other case looks
    broken, but I've kept the behavior as-is for now.

    Except for that we only change ->simple_tags from the ->change_queue_type,
    and when rejecting a tag message in a single driver, so keeping this
    churn out of scsi_adjust_queue_depth is a clear win.

    Now that the usage of scsi_adjust_queue_depth is more obvious we can
    also remove all the trivial instances in ->slave_alloc or ->slave_configure
    that just set it to the cmd_per_lun default.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Mike Christie
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Martin K. Petersen

    Christoph Hellwig
     
  • Allow a driver to ask for block layer tags by setting .use_blk_tags in the
    host template, in which case it will always see a valid value in
    request->tag, similar to the behavior when using blk-mq. This means even
    SCSI "untagged" commands will now have a tag, which is especially useful
    when using a host-wide tag map.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Mike Christie
    Reviewed-by: Martin K. Petersen
    Reviewed-by: Hannes Reinecke

    Christoph Hellwig
     
  • Remove the ordered_tags field, we haven't been issuing ordered tags based
    on it since the big barrier rework in 2010.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Mike Christie
    Reviewed-by: Bart Van Assche
    Reviewed-by: Martin K. Petersen

    Christoph Hellwig
     
  • Most drivers use exactly the same implementation, so provide it as a
    library function.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Bart Van Assche
    Reviewed-by: Mike Christie
    Reviewed-by: Martin K. Petersen
    Reviewed-by: Hannes Reinecke

    Christoph Hellwig
     

13 Oct, 2014

1 commit

  • Pull scheduler updates from Ingo Molnar:
    "The main changes in this cycle were:

    - Optimized support for Intel "Cluster-on-Die" (CoD) topologies (Dave
    Hansen)

    - Various sched/idle refinements for better idle handling (Nicolas
    Pitre, Daniel Lezcano, Chuansheng Liu, Vincent Guittot)

    - sched/numa updates and optimizations (Rik van Riel)

    - sysbench speedup (Vincent Guittot)

    - capacity calculation cleanups/refactoring (Vincent Guittot)

    - Various cleanups to thread group iteration (Oleg Nesterov)

    - Double-rq-lock removal optimization and various refactorings
    (Kirill Tkhai)

    - various sched/deadline fixes

    ... and lots of other changes"

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (72 commits)
    sched/dl: Use dl_bw_of() under rcu_read_lock_sched()
    sched/fair: Delete resched_cpu() from idle_balance()
    sched, time: Fix build error with 64 bit cputime_t on 32 bit systems
    sched: Improve sysbench performance by fixing spurious active migration
    sched/x86: Fix up typo in topology detection
    x86, sched: Add new topology for multi-NUMA-node CPUs
    sched/rt: Use resched_curr() in task_tick_rt()
    sched: Use rq->rd in sched_setaffinity() under RCU read lock
    sched: cleanup: Rename 'out_unlock' to 'out_free_new_mask'
    sched: Use dl_bw_of() under RCU read lock
    sched/fair: Remove duplicate code from can_migrate_task()
    sched, mips, ia64: Remove __ARCH_WANT_UNLOCKED_CTXSW
    sched: print_rq(): Don't use tasklist_lock
    sched: normalize_rt_tasks(): Don't use _irqsave for tasklist_lock, use task_rq_lock()
    sched: Fix the task-group check in tg_has_rt_tasks()
    sched/fair: Leverage the idle state info when choosing the "idlest" cpu
    sched: Let the scheduler see CPU idle states
    sched/deadline: Fix inter- exclusive cpusets migrations
    sched/deadline: Clear dl_entity params when setscheduling to different class
    sched/numa: Kill the wrong/dead TASK_DEAD check in task_numa_fault()
    ...

    Linus Torvalds
     

25 Sep, 2014

10 commits


19 Sep, 2014

1 commit

  • schedule(), io_schedule() and schedule_timeout() always return
    with TASK_RUNNING state set, so one more setting is unnecessary.

    (All places in patch are visible good, only exception is
    kiblnd_scheduler() from:

    drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c

    Its schedule() is one line above standard 3 lines of unified diff)

    No places where set_current_state() is used for mb().

    Signed-off-by: Kirill Tkhai
    Signed-off-by: Peter Zijlstra (Intel)
    Link: http://lkml.kernel.org/r/1410529254.3569.23.camel@tkhai
    Cc: Alasdair Kergon
    Cc: Anil Belur
    Cc: Arnd Bergmann
    Cc: Dave Kleikamp
    Cc: David Airlie
    Cc: David Howells
    Cc: Dmitry Eremin
    Cc: Frank Blaschka
    Cc: Greg Kroah-Hartman
    Cc: Heiko Carstens
    Cc: Helge Deller
    Cc: Isaac Huang
    Cc: James E.J. Bottomley
    Cc: James E.J. Bottomley
    Cc: J. Bruce Fields
    Cc: Jeff Dike
    Cc: Jesper Nilsson
    Cc: Jiri Slaby
    Cc: Laura Abbott
    Cc: Liang Zhen
    Cc: Linus Torvalds
    Cc: Martin Schwidefsky
    Cc: Masaru Nomura
    Cc: Michael Opdenacker
    Cc: Mikael Starvik
    Cc: Mike Snitzer
    Cc: Neil Brown
    Cc: Oleg Drokin
    Cc: Peng Tao
    Cc: Richard Weinberger
    Cc: Robert Love
    Cc: Steven Rostedt
    Cc: Trond Myklebust
    Cc: Ursula Braun
    Cc: Zi Shen Lim
    Cc: devel@driverdev.osuosl.org
    Cc: dm-devel@redhat.com
    Cc: dri-devel@lists.freedesktop.org
    Cc: fcoe-devel@open-fcoe.org
    Cc: jfs-discussion@lists.sourceforge.net
    Cc: linux390@de.ibm.com
    Cc: linux-afs@lists.infradead.org
    Cc: linux-cris-kernel@axis.com
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-nfs@vger.kernel.org
    Cc: linux-parisc@vger.kernel.org
    Cc: linux-raid@vger.kernel.org
    Cc: linux-s390@vger.kernel.org
    Cc: linux-scsi@vger.kernel.org
    Cc: qla2xxx-upstream@qlogic.com
    Cc: user-mode-linux-devel@lists.sourceforge.net
    Cc: user-mode-linux-user@lists.sourceforge.net
    Signed-off-by: Ingo Molnar

    Kirill Tkhai
     

17 Sep, 2014

5 commits

  • The PCI register read checking introduced in commit fe1b806f4f71
    ("qla2xxx: Disable adapter when we encounter a PCI disconnect") is
    active during driver probe. Hold off scheduling any board removal until
    the driver probe has completed. This ensures that the the board_disable
    work structure is initialized and more importantly, avoids racing
    qla2x00_probe_one.

    Signed-off-by: Joe Lawrence
    Acked-by: Chad Dupuis
    Signed-off-by: Christoph Hellwig

    Joe Lawrence
     
  • Introduce mutual exclusion between the qla2xxx_remove_one PCI driver
    callback and qla2x00_disable_board_on_pci_error, which is scheduled as
    board_disable work by qla2x00_check_reg{32,16}_for_disconnect:

    * Leave the driver-specific data attached to the underlying PCI device
    intact in qla2x00_disable_board_on_pci_error, so that qla2x00_remove_one
    has enough breadcrumbs to determine that any board_disable work has been
    completed.

    * In qla2xxx_remove_one, set a bit to prevent any subsequent
    board_disable work from scheduling, then cancel and wait until pending
    work has completed.

    * Reuse the PCI device enable count check in qla2x00_remove_one to
    determine if board_disable has occured. The original purpose of this
    check was unnecessary since the driver remove function wasn't called
    when the probe fails.

    Signed-off-by: Joe Lawrence
    Acked-by: Chad Dupuis
    Signed-off-by: Christoph Hellwig

    Joe Lawrence
     
  • Add an uint16_t variant of qla2x00_check_reg_for_disconnect and use
    these routines to check and schedule a PCI-disconnected board from a
    centralized place.

    Signed-off-by: Joe Lawrence
    Acked-by: Chad Dupuis
    Signed-off-by: Christoph Hellwig

    Joe Lawrence
     
  • Take advantage of commit fe1b806f4f71 ("qla2xxx: Refactor shutdown code
    so some functionality can be reused") to remove an inlined copy of
    qla2x00_clear_drv_active in the driver's probe hardware error path.

    Signed-off-by: Joe Lawrence
    Acked-by: Chad Dupuis
    Signed-off-by: Christoph Hellwig

    Joe Lawrence
     
  • Once calling scsi_host_put, be careful to not access qla_hw_data through
    the Scsi_Host private data (ie, scsi_qla_host base_vha).

    Fixes: fe1b806f4f71 ("qla2xxx: Refactor shutdown code so some functionality can be reused")
    Cc: stable@vger.kernel.org # 3.14, 3.15, 3.16
    Signed-off-by: Joe Lawrence
    Acked-by: Chad Dupuis
    Signed-off-by: Christoph Hellwig

    Joe Lawrence
     

18 Jul, 2014

3 commits

  • Now that we're using 64-bit LUNs internally we need to increase
    the size of max_luns to 64 bits, too.

    Signed-off-by: Hannes Reinecke
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Ewan Milne
    Signed-off-by: Christoph Hellwig

    Hannes Reinecke
     
  • The SCSI standard defines 64-bit values for LUNs, and large arrays
    employing large or hierarchical LUN numbers become more and more
    common.

    So update the linux SCSI stack to use 64-bit LUN numbers.

    Signed-off-by: Hannes Reinecke
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Ewan Milne
    Signed-off-by: Christoph Hellwig

    Hannes Reinecke
     
  • Older HBAs are only capable of supporting 16-bit LUNs,
    so we need to make sure to adjust max_lun accordingly.

    Signed-off-by: Hannes Reinecke
    Acked-by: Chad Dupuis
    Reviewed-by: Ewan Milne
    Signed-off-by: Christoph Hellwig

    Hannes Reinecke
     

10 Jun, 2014

1 commit

  • Pull SCSI updates from James Bottomley:
    "This patch consists of the usual driver updates (qla2xxx, qla4xxx,
    lpfc, be2iscsi, fnic, ufs, NCR5380) The NCR5380 is the addition to
    maintained status of a long neglected driver for older hardware. In
    addition there are a lot of minor fixes and cleanups and some more
    updates to make scsi mq ready"

    * tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (130 commits)
    include/scsi/osd_protocol.h: remove unnecessary __constant
    mvsas: Recognise device/subsystem 9485/9485 as 88SE9485
    Revert "be2iscsi: Fix processing cqe for cxn whose endpoint is freed"
    mptfusion: fix msgContext in mptctl_hp_hostinfo
    acornscsi: remove linked command support
    scsi/NCR5380: dprintk macro
    fusion: Remove use of DEF_SCSI_QCMD
    fusion: Add free msg frames to the head, not tail of list
    mpt2sas: Add free smids to the head, not tail of list
    mpt2sas: Remove use of DEF_SCSI_QCMD
    mpt2sas: Remove uses of serial_number
    mpt3sas: Remove use of DEF_SCSI_QCMD
    mpt3sas: Remove uses of serial_number
    qla2xxx: Use kmemdup instead of kmalloc + memcpy
    qla4xxx: Use kmemdup instead of kmalloc + memcpy
    qla2xxx: fix incorrect debug printk
    be2iscsi: Bump the driver version
    be2iscsi: Fix processing cqe for cxn whose endpoint is freed
    be2iscsi: Fix destroy MCC-CQ before MCC-EQ is destroyed
    be2iscsi: Fix memory corruption in MBX path
    ...

    Linus Torvalds
     

29 May, 2014

1 commit


19 May, 2014

10 commits