21 May, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (110 commits)
    [SCSI] qla2xxx: Refactor call to qla2xxx_read_sfp for thermal temperature.
    [SCSI] qla2xxx: Unify the read/write sfp mailbox command routines.
    [SCSI] qla2xxx: Clear complete initialization control block.
    [SCSI] qla2xxx: Allow an override of the registered maximum LUN.
    [SCSI] qla2xxx: Add host number in reset and quiescent message logs.
    [SCSI] qla2xxx: Correctly read sfp single byte mailbox register.
    [SCSI] qla2xxx: Add qla82xx_rom_unlock() function.
    [SCSI] qla2xxx: Log if qla82xx firmware fails to load from flash.
    [SCSI] qla2xxx: Use passed in host to initialize local scsi_qla_host in queuecommand function
    [SCSI] qla2xxx: Correct buffer start in edc sysfs debug print.
    [SCSI] qla2xxx: Update firmware version after flash update for ISP82xx.
    [SCSI] qla2xxx: Fix hang during driver unload when vport is active.
    [SCSI] qla2xxx: Properly set the dsd_list_len for dsd_chaining in cmd type 6.
    [SCSI] qla2xxx: Fix virtual port failing to login after chip reset.
    [SCSI] qla2xxx: Fix vport delete hang when logins are outstanding.
    [SCSI] hpsa: Change memset using sizeof(ptr) to sizeof(*ptr)
    [SCSI] ipr: Rate limit DMA mapping errors
    [SCSI] hpsa: add P2000 to list of shared SAS devices
    [SCSI] hpsa: do not attempt PCI power management reset method if we know it won't work.
    [SCSI] hpsa: remove superfluous sleeps around reset code
    ...

    Linus Torvalds
     

02 May, 2011

1 commit

  • Creating and destroying fcoe interface in a tight loop leads to a system
    deadlock with the following call traces:

    Call Trace:
    [] schedule_timeout+0x1fd/0x2c0
    [] ? wait_for_common+0x4f/0x190
    [] ? wait_for_common+0x4f/0x190
    [] wait_for_common+0xe7/0x190
    [] ? default_wake_function+0x0/0x20
    [] ? trace_hardirqs_on+0xd/0x10
    [] wait_for_completion+0x1d/0x20
    [] flush_workqueue+0x290/0x5f0
    [] ? flush_workqueue+0x0/0x5f0
    [] destroy_workqueue+0x38/0x340
    [] fc_remove_host+0x1b9/0x1f0 [scsi_transport_fc]
    [] bnx2fc_if_destroy+0xc5/0x1f0 [bnx2fc]
    [] bnx2fc_destroy+0x7a/0x100 [bnx2fc]
    [] fcoe_transport_destroy+0x9b/0x1b0 [libfcoe]
    [] param_attr_store+0x52/0x80
    [] module_attr_store+0x26/0x30
    [] sysfs_write_file+0xe6/0x170
    [] vfs_write+0xd0/0x1a0
    [] sys_write+0x54/0xa0
    [] system_call_fastpath+0x16/0x1b
    Call Trace:
    [] async_synchronize_cookie_domain+0x75/0x120
    [] ? autoremove_wake_function+0x0/0x40
    [] async_synchronize_cookie+0x15/0x20
    [] async_synchronize_full+0x1c/0x40
    [] sd_remove+0x36/0xc0 [sd_mod]
    [] __device_release_driver+0x75/0xe0
    [] device_release_driver+0x2f/0x50
    [] bus_remove_device+0xbe/0x120
    [] device_del+0x12f/0x1e0
    [] __scsi_remove_device+0xbd/0xc0
    [] scsi_remove_device+0x35/0x50
    [] __scsi_remove_target+0xe7/0x110
    [] ? __remove_child+0x0/0x30
    [] __remove_child+0x23/0x30
    [] device_for_each_child+0x4c/0x80
    [] scsi_remove_target+0x33/0x60
    [] fc_starget_delete+0x26/0x30 [scsi_transport_fc]
    [] fc_rport_final_delete+0xaa/0x200 [scsi_transport_fc]
    [] process_one_work+0x1aa/0x540
    [] ? process_one_work+0x13b/0x540
    [] ? fc_rport_final_delete+0x0/0x200 [scsi_transport_fc]
    [] worker_thread+0x179/0x410
    [] ? worker_thread+0x0/0x410
    [] kthread+0xb6/0xc0
    [] ? finish_task_switch+0x4b/0xe0
    [] kernel_thread_helper+0x4/0x10
    [] ? restore_args+0x0/0x30
    [] ? kthread+0x0/0xc0
    [] ? kernel_thread_helper+0x0/0x10

    fc_remove_host() waits for flushing the workqueue, but it is stuck at flushing
    the first work. The first work doesnt complete, because it is waiting for async
    layer to complete the IOs. The async layer cannot complete the IO as the
    terminate_rport_io for the second work was not called, which will be called
    only when the first work completes. Hence the deadlock. To resolve this
    deadlock, the workqueue allocation has been modified from
    create_singlethread_workqueue() to alloc_workqueue().

    In addition, fc_terminate_rport_io() should be called before the
    scsi_flush_work() to avoid the similar deadlock as above.

    scsi fc alloc queue. move terminate rport io before flush

    Signed-off-by: Nithin Nayak Sujir
    Signed-off-by: Bhanu Prakash Gollapudi
    Signed-off-by: James Bottomley

    Nithin Nayak Sujir
     

19 Apr, 2011

1 commit

  • We are currently using this flag to check whether it's safe
    to call into ->request_fn(). If it is set, we punt to kblockd.
    But we get a lot of false positives and excessive punts to
    kblockd, which hurts performance.

    The only real abuser of this infrastructure is SCSI. So export
    the async queue run and convert SCSI over to use that. There's
    room for improvement in that SCSI need not always use the async
    call, but this fixes our performance issue and they can fix that
    up in due time.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

18 Apr, 2011

1 commit

  • Instead of overloading __blk_run_queue to force an offload to kblockd
    add a new blk_run_queue_async helper to do it explicitly. I've kept
    the blk_queue_stopped check for now, but I suspect it's not needed
    as the check we do when the workqueue items runs should be enough.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

31 Mar, 2011

1 commit


10 Mar, 2011

2 commits


02 Mar, 2011

1 commit

  • __blk_run_queue() automatically either calls q->request_fn() directly
    or schedules kblockd depending on whether the function is recursed.
    blk-flush implementation needs to be able to explicitly choose
    kblockd. Add @force_kblockd.

    All the current users are converted to specify %false for the
    parameter and this patch doesn't introduce any behavior change.

    stable: This is prerequisite for fixing ide oops caused by the new
    blk-flush implementation.

    Signed-off-by: Tejun Heo
    Cc: Jan Beulich
    Cc: James Bottomley
    Cc: stable@kernel.org
    Signed-off-by: Jens Axboe

    Tejun Heo
     

08 Oct, 2010

1 commit

  • This adds a fc host dev loss sysfs file. Instead of
    calling into the driver using the get_host_def_dev_loss_tmo
    callback, we allow drivers to init the dev loss like is done
    for other fc host params, and then the fc class will handle
    updating the value if the user writes to the new sysfs file.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

10 Sep, 2010

1 commit

  • When an rport is "blocked" and a bsg request is received, the bsg request gets
    placed on the queue but the queue stalls. If the fc object is then deleted - the
    bsg queue never restarts and keeps the reference on the object, and stops the
    overall teardown.

    This patch restarts the bsg queue on teardown and drains any pending requests,
    allowing the teardown to succeed.

    Signed-off-by: Carl Lajeunesse
    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

06 Sep, 2010

1 commit


11 Aug, 2010

1 commit


17 Jun, 2010

1 commit


11 Apr, 2010

2 commits

  • If the scsi eh is running and then a FC LLD calls
    fc_remote_port_delete, the SCSI commands sent from the eh will fail.
    To prevent this, a FC LLD can call fc_block_scsi_eh from the eh
    callback, blocking the eh thread until the dev_loss_tmo fires or the
    remote port is available again.

    If (e.g. for a multipathing setup) the dev_loss_tmo is set to a very
    large value, thus preventing the scsi device removal , the scsi eh can
    block for a long time. For multipathing, the fast_io_fail_tmo is then
    set to a low value to detect path problems sooner.

    This patch introduces a new return code FAST_IO_FAIL. The function
    fc_block_scsi_eh now returns FAST_IO_FAIL when the fast_io_fail_tmo
    fires. This indicates that the LLD terminated all pending I/O requests
    and there are no more pending SCSI commands for the scsi eh to wait
    for. This return code can be passed back to the scsi eh to stop the
    escalation and finish the recovery process for this device.

    Signed-off-by: Christof Schmitt
    Signed-off-by: James Bottomley

    Christof Schmitt
     
  • The rport structure defines dev_loss_tmo as u32, which is
    later multiplied with HZ to get the actual timeout value.
    This might overflow for large dev_loss_tmo values. So we
    should be better using u64 as intermediate variables here
    to protect against overflow.

    Signed-off-by: Hannes Reinecke
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Hannes Reinecke
     

06 Apr, 2010

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
    [SCSI] qla1280: retain firmware for error recovery
    [SCSI] attirbute_container: Initialize sysfs attributes with sysfs_attr_init
    [SCSI] advansys: fix regression with request_firmware change
    [SCSI] qla2xxx: Updated version number to 8.03.02-k2.
    [SCSI] qla2xxx: Prevent sending mbx commands from sysfs during isp reset.
    [SCSI] qla2xxx: Disable MSI on qla24xx chips other than QLA2432.
    [SCSI] qla2xxx: Check to make sure multique and CPU affinity support is not enabled at the same time.
    [SCSI] qla2xxx: Correct vp_idx checking during PORT_UPDATE processing.
    [SCSI] qla2xxx: Honour "Extended BB credits" bit for CNAs.
    [SCSI] scsi_transport_fc: Make sure commands are completed when rport is offline
    [SCSI] libiscsi: Fix recovery slowdown regression

    Linus Torvalds
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

28 Mar, 2010

1 commit


09 Mar, 2010

1 commit

  • The issue occur while deleting 60 virtual ports through the sys
    interface /sys/class/fc_vports/vport-X/vport_delete. It happen while in
    a mistake each request sent twice for the same vport. This interface is
    asynchronous, entering the delete request into a work queue, allowing
    more than one request to enter to the delete work queue. The result is a
    NULL pointer. The first request already delete the vport, while the
    second request got a pointer to the vport before the device destroyed.
    Re-create vport later cause system freeze.

    Solution: Check vport flags before entering the request to the work queue.

    [jejb: fixed intlong problem on spinlock flags variable]
    Signed-off-by: Gal Rosen
    Acked-by: James Smart
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    Gal Rosen
     

19 Jan, 2010

1 commit

  • Currently dev_loss_tmo is capped by SCSI_DEVICE_BLOCK_MAX_TIMEOUT.
    This causes problem with multipathing when the 'no_path_retry' setting
    exceeds the dev_loss_tmo setting, as then the system might run into
    a deadlock when all paths have been removed temporarily for longer
    than dev_loss_tmo.
    The principal reasons for the capping has been that we should
    not allow a remote port to remain in status 'blocked' indefinitely,
    so the capping is there to ensure that the port status is being reset
    eventually.
    However, the fast_io_fail_tmo will also move the remote port out of
    the 'blocked' state, so for any HBA driver implementing both the
    capping should really be on the fast_io_fail_tmo, and not on the
    dev_loss_tmo.
    This patch implements just that, ie the fast_io_fail_tmo is capped
    to SCSI_DEVICE_BLOCK_TIMEOUT and the capping is removed from
    dev_loss_tmo when fast_io_fail_tmo is set.
    This allows us to synchronize the dev_loss_tmo setting to the
    'no_path_retry' setting from multipathing thus avoiding the deadlock.

    Signed-off-by: Hannes Reinecke
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Hannes Reinecke
     

18 Jan, 2010

1 commit

  • The hardware used with zfcp cannot abort a currently pending CT or ELS
    request. Therefore we need the option to postpone the timeout
    triggered request abort within the fc layer, since there is nothing
    zfcp can do to stop the request at this point.

    Cc: James Smart
    Signed-off-by: Swen Schillig
    Signed-off-by: Christof Schmitt
    Signed-off-by: James Bottomley

    Swen Schillig
     

10 Dec, 2009

2 commits

  • If transport_class_register fails we should unregister any
    registered classes, or we will leak memory or other
    resources.

    I did a quick modprobe of scsi_transport_fc to test the
    patch.

    Signed-off-by: Mike Christie
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    Mike Christie
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (222 commits)
    [SCSI] zfcp: Remove flag ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP
    [SCSI] zfcp: Activate fc4s attributes for zfcp in FC transport class
    [SCSI] zfcp: Block scsi_eh thread for rport state BLOCKED
    [SCSI] zfcp: Update FSF error reporting
    [SCSI] zfcp: Improve ELS ADISC handling
    [SCSI] zfcp: Simplify handling of ct and els requests
    [SCSI] zfcp: Remove ZFCP_DID_MASK
    [SCSI] zfcp: Move WKA port to zfcp FC code
    [SCSI] zfcp: Use common code definitions for FC CT structs
    [SCSI] zfcp: Use common code definitions for FC ELS structs
    [SCSI] zfcp: Update FCP protocol related code
    [SCSI] zfcp: Dont fail SCSI commands when transitioning to blocked fc_rport
    [SCSI] zfcp: Assign scheduled work to driver queue
    [SCSI] zfcp: Remove STATUS_COMMON_REMOVE flag as it is not required anymore
    [SCSI] zfcp: Implement module unloading
    [SCSI] zfcp: Merge trace code for fsf requests in one function
    [SCSI] zfcp: Access ports and units with container_of in sysfs code
    [SCSI] zfcp: Remove suspend callback
    [SCSI] zfcp: Remove global config_mutex
    [SCSI] zfcp: Replace local reference counting with common kref
    ...

    Linus Torvalds
     

05 Dec, 2009

2 commits

  • If the port state is blocked and the fast io fail tmo has
    fired then this patch will fail bsg requests immediately.
    This is needed if userspace is sending IOs to test the transport
    like with fcping, so it will not have to wait for the dev loss tmo.
    With this patch he bsg req fast io fail code behaves like the normal
    and sg io/passthrough fast io fail.

    Signed-off-by: Mike Christie
    Acked-By: James Smart
    Signed-off-by: James Bottomley

    Mike Christie
     
  • Move the duplicated code from FC LLDs to SCSI FC transport class.

    Acked-by: James Smart
    Acked-by: Giridhar Malavali
    Acked-by: Abhijeet Joglekar
    Signed-off-by: Christof Schmitt
    Signed-off-by: James Bottomley

    Christof Schmitt
     

07 Nov, 2009

1 commit

  • There are three error paths in the FC passthru code where
    job->reply->reply_payload_rcv_len does not get initialized,
    resulting in the WARN_ON in fc_bsg_jobdone going off. This patch
    fixes this. An example of one of the WARN_ON messages seen:

    Badness at drivers/scsi/scsi_transport_fc.c:3424
    NIP: d000000000bf21ac LR: d000000000bf2684 CTR: c0000000003f753c
    REGS: c00000004eb03430 TRAP: 0700 Not tainted (2.6.32-rc4-git)
    MSR: 8000000000029032 CR: 24008444 XER: 00000012
    TASK = c00000004c3fc9c0[3243] 'fcping' THREAD: c00000004eb00000 CPU: 0
    GPR00: 0000000000000001 c00000004eb036b0 d000000000c01da0 000000004bf17fc0
    GPR04: c00000004cd256a0 c00000007e011ce0 c00000007e011d00 c00000004e718000
    GPR08: c00000004cd256a0 c00000004eb03ad0 c00000004cd25a90 0000000000000020
    GPR12: d000000000bf7848 c000000000b62600 0000000000000060 fffffffffffffff4
    GPR16: ffffffffffffffd6 c00000004c7a3060 ffffffff80000003 c00000004b0f0310
    GPR20: c00000004e71b180 c00000004c7a3060 0000000000000004 0000000000000000
    GPR24: c00000004e71b000 c00000004c7a3000 c00000004b0f0000 c00000004e718000
    GPR28: c00000004cd256a0 c00000004cd25a90 d000000000c01db0 c00000004e01d680
    NIP [d000000000bf21ac] .fc_bsg_jobdone+0x64/0x9c [scsi_transport_fc]
    LR [d000000000bf2684] .fc_bsg_request_handler+0x4a0/0x564 [scsi_transport_fc]
    Call Trace:
    [c00000004eb036b0] [c0000000003f755c] .get_device+0x20/0x38 (unreliable)
    [c00000004eb03720] [d000000000bf2684] .fc_bsg_request_handler+0x4a0/0x564 [scsi_transport_fc]
    [c00000004eb03820] [c0000000002c9b5c] .__generic_unplug_device+0x58/0x70
    [c00000004eb038a0] [c0000000002ce9fc] .blk_execute_rq_nowait+0x70/0xf4
    [c00000004eb03930] [c0000000002ceb2c] .blk_execute_rq+0xac/0x100
    [c00000004eb03a60] [c0000000002d51b4] .bsg_ioctl+0x1fc/0x264
    [c00000004eb03c10] [c00000000018a89c] .vfs_ioctl+0x54/0xec
    [c00000004eb03ca0] [c00000000018b01c] .do_vfs_ioctl+0x640/0x6a8
    [c00000004eb03d80] [c00000000018b0fc] .SyS_ioctl+0x78/0xbc
    [c00000004eb03e30] [c0000000000085b4] syscall_exit+0x0/0x40
    Instruction dump:
    8003004c 2fa80000 90090104 38000000 900a0108 419e0038 e9230040 81680108
    80690004 7f835840 7c101026 5400f7fe 7d605b78 7f8b1840 409d0008

    Signed-off-by: Brian King
    Acked-By: James Smart
    Signed-off-by: James Bottomley

    Brian King
     

30 Oct, 2009

1 commit

  • I was doing some large lun count testing with 2.6.31 and hit
    a BUG_ON() in fc_timeout_deleted_rport(), and it seems like it
    should have been just a matter of time before someone did.

    It seems invalid to set port_state under lock, then expect it to
    remain set after releasing the lock. Another thread called
    fc_remote_port_add() when the lock was released, changing the
    port_state.

    This patch removes the BUG_ON and moves the test of the
    port_state to inside the host_lock. It's been running for
    several weeks now with no ill effect.

    Signed-off-by: Michael Reed
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Michael Reed
     

02 Oct, 2009

1 commit

  • Add missing kernel-doc notation in scsi_transport_fc.c:

    Warning(drivers/scsi/scsi_transport_fc.c:3593): No description found for parameter 'q'
    Warning(drivers/scsi/scsi_transport_fc.c:3700): No description found for parameter 'q'

    Signed-off-by: Randy Dunlap
    Signed-off-by: James Bottomley

    Randy Dunlap
     

23 Aug, 2009

2 commits


26 Jun, 2009

1 commit

  • Fix this:
    ------------[ cut here ]------------
    Badness at block/blk-core.c:244
    CPU: 0 Tainted: G W 2.6.31-rc1-00004-gd3a263a #3
    Process zfcp_wq (pid: 901, task: 000000002fb7a038, ksp: 000000002f02bc78)
    Krnl PSW : 0704300180000000 00000000002141ba (blk_remove_plug+0xb2/0xb8)
    R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:3 PM:0 EA:3
    Krnl GPRS: 0000000000000001 0000000000000001 0000000022811440 0000000022811798
    000000000027ff4e 0000000000000000 0000000000000000 000000002f00f000
    070000000006a0f4 000000002af70000 000000002af2a800 00000000228d1c00
    0000000022811440 000000000050c708 000000002f02bca8 000000002f02bc80
    Krnl Code: 00000000002141b0: b9140022 lgfr %r2,%r2
    00000000002141b4: 07fe bcr 15,%r14
    00000000002141b6: a7f40001 brc 15,2141b8
    >00000000002141ba: a7f4ffbe brc 15,214136
    00000000002141be: 0707 bcr 0,%r7
    00000000002141c0: ebaff0680024 stmg %r10,%r15,104(%r15)
    00000000002141c6: c0d00017c2a9 larl %r13,50c718
    00000000002141cc: a7f13fc0 tmll %r15,16320
    Call Trace:
    ([] C.272.16122+0x88/0x110)
    [] __blk_run_queue+0x2c/0x154
    [] fc_remote_port_add+0x85e/0x95c
    [] zfcp_scsi_rport_work+0xe6/0x148
    [] worker_thread+0x25c/0x318
    [] kthread+0x94/0x9c
    [] kernel_thread_starter+0x6/0xc
    [] kernel_thread_starter+0x0/0xc
    INFO: lockdep is turned off.
    Last Breaking-Event-Address:
    [] blk_remove_plug+0xae/0xb8

    The FC pass-through support triggers the WARN_ON(!irqs_disabled()) in
    blk_plug_device. Since blk_plug_device requires being called with
    disabled interrupts, use spin_lock_irqsave in fc_bsg_goose_queue to
    disable the interrupts before calling into the block layer.

    Signed-off-by: Christof Schmitt
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Christof Schmitt
     

22 Jun, 2009

3 commits


13 Jun, 2009

1 commit

  • Attached is the ELS/CT pass-thru patch for the FC Transport. The patch
    creates a generic framework that lays on top of bsg and the SGIO v4 ioctl
    in order to pass transaction requests to LLDD's.

    The interface supports the following operations:
    On an fc_host basis:
    Request login to the specified N_Port_ID, creating an fc_rport.
    Request logout of the specified N_Port_ID, deleting an fc_rport
    Send ELS request to specified N_Port_ID w/o requiring a login, and
    wait for ELS response.
    Send CT request to specified N_Port_ID and wait for CT response.
    Login is required, but LLDD is allowed to manage login and decide
    whether it stays in place after the request is satisfied.
    Vendor-Unique request. Allows a LLDD-specific request to be passed
    to the LLDD, and the passing of a response back to the application.
    On an fc_rport basis:
    Send ELS request to nport and wait for ELS response.
    Send CT request to nport and wait for CT response.

    The patch also exports several headers from include/scsi such that
    they can be available to user-space applications:
    include/scsi/scsi.h
    include/scsi/scsi_netlink.h
    include/scsi/scsi_netlink_fc.h
    include/scsi/scsi_bsg_fc.h

    For further information, refer to the last RFC:
    http://marc.info/?l=linux-scsi&m=123436574018579&w=2

    Note: Documentation is still spotty and will be added later.

    [bharrosh@panasas.com: update for new block API]
    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

29 Mar, 2009

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (119 commits)
    [SCSI] scsi_dh_rdac: Retry for NOT_READY check condition
    [SCSI] mpt2sas: make global symbols unique
    [SCSI] sd: Make revalidate less chatty
    [SCSI] sd: Try READ CAPACITY 16 first for SBC-2 devices
    [SCSI] sd: Refactor sd_read_capacity()
    [SCSI] mpt2sas v00.100.11.15
    [SCSI] mpt2sas: add MPT2SAS_MINOR(221) to miscdevice.h
    [SCSI] ch: Add scsi type modalias
    [SCSI] 3w-9xxx: add power management support
    [SCSI] bsg: add linux/types.h include to bsg.h
    [SCSI] cxgb3i: fix function descriptions
    [SCSI] libiscsi: fix possbile null ptr session command cleanup
    [SCSI] iscsi class: remove host no argument from session creation callout
    [SCSI] libiscsi: pass session failure a session struct
    [SCSI] iscsi lib: remove qdepth param from iscsi host allocation
    [SCSI] iscsi lib: have lib create work queue for transmitting IO
    [SCSI] iscsi class: fix lock dep warning on logout
    [SCSI] libiscsi: don't cap queue depth in iscsi modules
    [SCSI] iscsi_tcp: replace scsi_debug/tcp_debug logging with iscsi conn logging
    [SCSI] libiscsi_tcp: replace tcp_debug/scsi_debug logging with session/conn logging
    ...

    Linus Torvalds
     

13 Mar, 2009

1 commit


06 Feb, 2009

1 commit

  • Currently, netlink_broadcast() reports errors to the caller if no
    messages at all were delivered:

    1) If, at least, one message has been delivered correctly, returns 0.
    2) Otherwise, if no messages at all were delivered due to skb_clone()
    failure, return -ENOBUFS.
    3) Otherwise, if there are no listeners, return -ESRCH.

    With this patch, the caller knows if the delivery of any of the
    messages to the listeners have failed:

    1) If it fails to deliver any message (for whatever reason), return
    -ENOBUFS.
    2) Otherwise, if all messages were delivered OK, returns 0.
    3) Otherwise, if no listeners, return -ESRCH.

    In the current ctnetlink code and in Netfilter in general, we can add
    reliable logging and connection tracking event delivery by dropping the
    packets whose events were not successfully delivered over Netlink. Of
    course, this option would be settable via /proc as this approach reduces
    performance (in terms of filtered connections per seconds by a stateful
    firewall) but providing reliable logging and event delivery (for
    conntrackd) in return.

    This patch also changes some clients of netlink_broadcast() that
    may report ENOBUFS errors via printk. This error handling is not
    of any help. Instead, the userspace daemons that are listening to
    those netlink messages should resync themselves with the kernel-side
    if they hit ENOBUFS.

    BTW, netlink_broadcast() clients include those that call
    cn_netlink_send(), nlmsg_multicast() and genlmsg_multicast() since they
    internally call netlink_broadcast() and return its error value.

    Signed-off-by: Pablo Neira Ayuso
    Signed-off-by: David S. Miller

    Pablo Neira Ayuso
     

06 Jan, 2009

1 commit


03 Jan, 2009

1 commit