28 Jul, 2010

1 commit

  • We have two separate definitions for identical constants with nearly the
    same name. One comes from the generic headers in scsi.h; the other is
    an enum in libsas.h ... it's causing confusion about which one is
    correct (fortunately they both are).

    Fix this by eliminating the libsas.h duplicate

    Signed-off-by: James Bottomley

    James Bottomley
     

21 May, 2010

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (182 commits)
    [SCSI] aacraid: add an ifdef'd device delete case instead of taking the device offline
    [SCSI] aacraid: prohibit access to array container space
    [SCSI] aacraid: add support for handling ATA pass-through commands.
    [SCSI] aacraid: expose physical devices for models with newer firmware
    [SCSI] aacraid: respond automatically to volumes added by config tool
    [SCSI] fcoe: fix fcoe module ref counting
    [SCSI] libfcoe: FIP Keep-Alive messages for VPorts are sent with incorrect port_id and wwn
    [SCSI] libfcoe: Fix incorrect MAC address clearing
    [SCSI] fcoe: fix a circular locking issue with rtnl and sysfs mutex
    [SCSI] libfc: Move the port_id into lport
    [SCSI] fcoe: move link speed checking into its own routine
    [SCSI] libfc: Remove extra pointer check
    [SCSI] libfc: Remove unused fc_get_host_port_type
    [SCSI] fcoe: fixes wrong error exit in fcoe_create
    [SCSI] libfc: set seq_id for incoming sequence
    [SCSI] qla2xxx: Updates to ISP82xx support.
    [SCSI] qla2xxx: Optionally disable target reset.
    [SCSI] qla2xxx: ensure flash operation and host reset via sg_reset are mutually exclusive
    [SCSI] qla2xxx: Silence bogus warning by gcc for wrap and did.
    [SCSI] qla2xxx: T10 DIF support added.
    ...

    Linus Torvalds
     

18 May, 2010

1 commit

  • ATA_FLAG_DISABLED is only used by drivers which don't use
    ->error_handler framework and is largely broken. Its only meaningful
    function is to make irq handlers skip processing if the flag is set,
    which is largely useless and even harmful as it makes those ports more
    likely to cause IRQ storms.

    Kill ATA_FLAG_DISABLED and makes the callers disable attached devices
    instead. ata_port_probe() and ata_port_disable() which manipulate the
    flag are also killed.

    This simplifies condition check in IRQ handlers. While updating IRQ
    handlers, remove ap NULL check as libata guarantees consecutive port
    allocation (unoccupied ports are initialized with dummies) and
    long-obsolete ATA_QCFLAG_ACTIVE check (checked by ata_qc_from_tag()).

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

17 May, 2010

1 commit

  • commit 70b25f890ce9f0520c64075ce9225a5b020a513e
    Author: Tejun Heo
    Date: Thu Apr 15 09:00:08 2010 +0900

    [SCSI] fix locking around blk_abort_request()

    Introduced a reference before check problem, fix this by moving the
    lock shorthand code to be right at the point of actual use.

    Reported-by: Dan Carpenter
    Acked-by: Tejun Heo
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    James Bottomley
     

02 May, 2010

1 commit

  • blk_abort_request() expects queue lock to be held by the caller.
    Grab it before calling the function.

    Lack of this synchronization led to infinite loop on corrupt
    q->timeout_list.

    Signed-off-by: Tejun Heo
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Tejun Heo
     

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
     

10 Dec, 2009

1 commit

  • * 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

1 commit

  • This patch modifies scsi_host_template->change_queue_depth so that
    it takes an argument indicating why it is being called. This will be
    used so that if a LLD needs to do some extra processing when
    handling queue fulls or later ramp ups, it can do so.

    This is a simple port of the drivers setting a change_queue_depth
    callback. In the patch I just have these LLDs adjust the queue depth
    if the user was requesting it.

    Signed-off-by: Mike Christie

    [Vasu.Dev: v2
    Also converted pmcraid_change_queue_depth and then verified
    all modules compile using "make allmodconfig" for any new build
    warnings on X86_64.

    Updated original description after combing two original
    patches from Mike to make this patch git bisectable.]
    Signed-off-by: Vasu Dev
    [jejb: fixed up 53c700]
    Signed-off-by: James Bottomley

    Mike Christie
     

07 Nov, 2009

1 commit


30 Jul, 2009

1 commit

  • Hotplug of phys which form wide ports simply does not work at the moment. Fix
    this by adding checks at the hotplug points to see if the attached sas address
    of the phy already exists (in which case it's part of a wide port) and act
    accordingly.

    Signed-off-by: Tom Peng
    Signed-off-by: Jack Wang
    Signed-off-by: Lindar Liu
    Signed-off-by: Kevin Ao
    [jejb: tidied up coding, fixed an error case and made TRUE/FALSE lower
    case to fix a ppc64 compile error in linux-next]
    Signed-off-by: James Bottomley

    Tom Peng
     

17 Jul, 2009

1 commit

  • There's a hotplug problem in the way libsas allocates ports: it loops over the
    available ports first trying to add to an existing for a wide port and
    otherwise allocating the next free port. This scheme only works if the port
    array is packed from zero, which fails if a port gets hot unplugged and the
    array becomes sparse. In that case, a new port is formed even if there's a
    wide port it should be part of. Fix this by creating two loops over all the
    ports: the first to see if the phy should be part of a wide port and the
    second to form a new port in an empty port slot.

    Signed-off-by: Tom Peng
    Signed-off-by: Jack Wang
    Signed-off-by: Lindar Liu
    Cc: Stable Tree
    Signed-off-by: James Bottomley

    Tom Peng
     

19 May, 2009

1 commit

  • In commit c3a4d78c580de4edc9ef0f7c59812fb02ceb037f, while introducing
    rq->resid_len, the default value of residue count was changed from
    full count to zero. The conversion was done under the assumption that
    when a request fails residue count wasn't defined. However, Boaz and
    James pointed out that this wasn't true and the residue count should
    be preserved for failed requests too.

    This patchset restores the original behavior by setting rq->resid_len
    to blk_rq_bytes(rq) on request start and restoring explicit clearing
    in affected drivers. While at it, take advantage of the fact that
    rq->resid_len is set to full count where applicable.

    * ide-cd: rq->resid_len cleared on pc success

    * mptsas: req->resid_len cleared on success

    * sas_expander: rsp/req->resid_len cleared on success

    * mpt2sas_transport: req->resid_len cleared on success

    * ide-cd, ide-tape, mptsas, sas_host_smp, mpt2sas_transport, ub: take
    advantage of initial full count to simplify code

    Boaz Harrosh spotted bug in resid_len initialization. Fixed as
    suggested.

    Signed-off-by: Tejun Heo
    Acked-by: Borislav Petkov
    Cc: Boaz Harrosh
    Cc: James Bottomley
    Cc: Pete Zaitcev
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Sergei Shtylyov
    Cc: Eric Moore
    Cc: Darrick J. Wong
    Signed-off-by: Jens Axboe

    Tejun Heo
     

11 May, 2009

2 commits

  • With recent unification of fields, it's now guaranteed that
    rq->data_len always equals blk_rq_bytes(). Convert all non-IDE direct
    users to accessors. IDE will be converted in a separate patch.

    Boaz: spotted incorrect data_len/resid_len conversion in osd.

    [ Impact: convert direct rq->data_len usages to blk_rq_bytes() ]

    Signed-off-by: Tejun Heo
    Acked-by: Sergei Shtylyov
    Cc: Pete Zaitcev
    Cc: Eric Moore
    Cc: Markus Lidel
    Cc: Darrick J. Wong
    Cc: James Bottomley
    Cc: Eric Moore
    Cc: Boaz Harrosh
    Cc: FUJITA Tomonori
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • rq->data_len served two purposes - the length of data buffer on issue
    and the residual count on completion. This duality creates some
    headaches.

    First of all, block layer and low level drivers can't really determine
    what rq->data_len contains while a request is executing. It could be
    the total request length or it coulde be anything else one of the
    lower layers is using to keep track of residual count. This
    complicates things because blk_rq_bytes() and thus
    [__]blk_end_request_all() relies on rq->data_len for PC commands.
    Drivers which want to report residual count should first cache the
    total request length, update rq->data_len and then complete the
    request with the cached data length.

    Secondly, it makes requests default to reporting full residual count,
    ie. reporting that no data transfer occurred. The residual count is
    an exception not the norm; however, the driver should clear
    rq->data_len to zero to signify the normal cases while leaving it
    alone means no data transfer occurred at all. This reverse default
    behavior complicates code unnecessarily and renders block PC on some
    drivers (ide-tape/floppy) unuseable.

    This patch adds rq->resid_len which is used only for residual count.

    While at it, remove now unnecessasry blk_rq_bytes() caching in
    ide_pc_intr() as rq->data_len is not changed anymore.

    Boaz : spotted missing conversion in osd
    Sergei : spotted too early conversion to blk_rq_bytes() in ide-tape

    [ Impact: cleanup residual count handling, report 0 resid by default ]

    Signed-off-by: Tejun Heo
    Cc: James Bottomley
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Borislav Petkov
    Cc: Sergei Shtylyov
    Cc: Mike Miller
    Cc: Eric Moore
    Cc: Alan Stern
    Cc: FUJITA Tomonori
    Cc: Doug Gilbert
    Cc: Mike Miller
    Cc: Eric Moore
    Cc: Darrick J. Wong
    Cc: Pete Zaitcev
    Cc: Boaz Harrosh
    Signed-off-by: Jens Axboe

    Tejun Heo
     

16 Jan, 2009

1 commit


03 Jan, 2009

2 commits


11 Oct, 2008

1 commit

  • * 'for-2.6.28' of git://git.kernel.dk/linux-2.6-block: (132 commits)
    doc/cdrom: Trvial documentation error, file not present
    block_dev: fix kernel-doc in new functions
    block: add some comments around the bio read-write flags
    block: mark bio_split_pool static
    block: Find bio sector offset given idx and offset
    block: gendisk integrity wrapper
    block: Switch blk_integrity_compare from bdev to gendisk
    block: Fix double put in blk_integrity_unregister
    block: Introduce integrity data ownership flag
    block: revert part of d7533ad0e132f92e75c1b2eb7c26387b25a583c1
    bio.h: Remove unused conditional code
    block: remove end_{queued|dequeued}_request()
    block: change elevator to use __blk_end_request()
    gdrom: change to use __blk_end_request()
    memstick: change to use __blk_end_request()
    virtio_blk: change to use __blk_end_request()
    blktrace: use BLKTRACE_BDEV_SIZE as the name size for setup structure
    block: add lld busy state exporting interface
    block: Fix blk_start_queueing() to not kick a stopped queue
    include blktrace_api.h in headers_install
    ...

    Linus Torvalds
     

09 Oct, 2008

1 commit

  • Right now SCSI and others do their own command timeout handling.
    Move those bits to the block layer.

    Instead of having a timer per command, we try to be a bit more clever
    and simply have one per-queue. This avoids the overhead of having to
    tear down and setup a timer for each command, so it will result in a lot
    less timer fiddling.

    Signed-off-by: Mike Anderson
    Signed-off-by: Jens Axboe

    Jens Axboe
     

29 Sep, 2008

1 commit

  • Logically, SCR access ops should take @link; however, there was no
    compelling reason to convert all SCR access ops when adding @link
    abstraction as there's one-to-one mapping between a port and a non-PMP
    link. However, that assumption won't hold anymore with the scheduled
    addition of slave link.

    Make SCR access ops per-link.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

27 Jul, 2008

1 commit


19 Apr, 2008

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (137 commits)
    [SCSI] iscsi: bidi support for iscsi_tcp
    [SCSI] iscsi: bidi support at the generic libiscsi level
    [SCSI] iscsi: extended cdb support
    [SCSI] zfcp: Fix error handling for blocked unit for send FCP command
    [SCSI] zfcp: Remove zfcp_erp_wait from slave destory handler to fix deadlock
    [SCSI] zfcp: fix 31 bit compile warnings
    [SCSI] bsg: no need to set BSG_F_BLOCK bit in bsg_complete_all_commands
    [SCSI] bsg: remove minor in struct bsg_device
    [SCSI] bsg: use better helper list functions
    [SCSI] bsg: replace kobject_get with blk_get_queue
    [SCSI] bsg: takes a ref to struct device in fops->open
    [SCSI] qla1280: remove version check
    [SCSI] libsas: fix endianness bug in sas_ata
    [SCSI] zfcp: fix compiler warning caused by poking inside new semaphore (linux-next)
    [SCSI] aacraid: Do not describe check_reset parameter with its value
    [SCSI] aacraid: Fix down_interruptible() to check the return value
    [SCSI] sun3_scsi_vme: add MODULE_LICENSE
    [SCSI] st: rename flush_write_buffer()
    [SCSI] tgt: use KMEM_CACHE macro
    [SCSI] initio: fix big endian problems for auto request sense
    ...

    Linus Torvalds
     

18 Apr, 2008

6 commits

  • Now that SFF assumptions are separated out from non-SFF reset
    sequence, port_ops->sff_dev_select() is no longer necessary for
    non-SFF controllers. Kill ata_noop_dev_select() and ->sff_dev_select
    initialization from base and other non-SFF port_ops.

    Signed-off-by: Tejun Heo

    Tejun Heo
     
  • Now that all SFF stuff is separated out of core layer, core layer
    doesn't call ops->[alt_]check_status(). In fact, no one calls them
    for non-SFF drivers anymore. Kill them.

    Signed-off-by: Tejun Heo

    Tejun Heo
     
  • Now that all SFF stuff is separated out of core layer, core layer
    doesn't call ops->tf_read directly. It gets called only via
    ops->qc_fill_rtf() for non-SFF drivers. This patch directly
    implements private ops->qc_fill_rtf() for non-SFF controllers and kill
    ops->tf_read().

    This is much cleaner for non-SFF controllers as some of them have to
    cache SFF register values in private data structure and report the
    cached values via ops->tf_read(). Also, ops->tf_read() gets nasty for
    controllers which don't have clear notion of TF registers when
    operation is not in progress.

    As this change makes default ops->qc_fill_rtf unnecessary, move
    ata_sff_qc_fill_rtf() form ata_base_port_ops to ata_sff_port_ops where
    it belongs.

    Signed-off-by: Tejun Heo

    Tejun Heo
     
  • On command completion, ata_qc_complete() directly called ops->tf_read
    to fill qc->result_tf. This patch adds ops->qc_fill_rtf to replace
    hardcoded ops->tf_read usage.

    ata_sff_qc_fill_rtf() which uses ops->tf_read to fill result_tf is
    implemented and set in ata_base_port_ops and other ops tables which
    don't inherit from ata_base_port_ops, so this patch doesn't introduce
    any behavior change.

    ops->qc_fill_rtf() is similar to ops->sff_tf_read() but can only be
    called when a command finishes. As some non-SFF controllers don't
    have TF registers defined unless they're associated with in-flight
    commands, this limited operation makes life easier for those drivers
    and help lifting SFF assumptions from libata core layer.

    Signed-off-by: Tejun Heo

    Tejun Heo
     
  • Add sff_ prefix to SFF specific port ops.

    This rename is in preparation of separating SFF support out of libata
    core layer. This patch strictly renames ops and doesn't introduce any
    behavior difference.

    Signed-off-by: Tejun Heo

    Tejun Heo
     
  • Signed-off-by: Al Viro
    Signed-off-by: James Bottomley

    Al Viro
     

08 Apr, 2008

1 commit


28 Mar, 2008

1 commit


24 Feb, 2008

4 commits

  • - Correct one use after free of the sas task
    - update the reset required path to move straight to LUN reset
    - make the bigger hammer actually reset something instead of just trying
    to clear all the tasks.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • Once the phy reset is plumbed in properly, SATA error handling fails
    nastily because we change the port attached_sas_address using the WWN
    field of the IDENTIFY message. This is a nice thing to do in theory,
    but it really destroys hotplug because any event on the port causes an
    automatic mismatch between the sas_address the phy just picked up and
    the one we propagate into the port. However ugly they are, we have to
    stick with the sas addresses made up by the phys and expanders.

    Also does a few cosmetic changes to the way port printing is done to
    make it clearer how a port is formed.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • This is needed by the to be added I_T reset function in aic94xx. It
    needs to know the local phy so it can send a link or hard reset along
    the path.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6: (25 commits)
    [SCSI] qlogicpt: section fixes
    [SCSI] mvsas: convert from rough draft to working driver
    [SCSI] mvsas: Add Marvell 6440 SAS/SATA driver
    [SCSI] libsas: correctly flush the LU queue on error recovery
    [SCSI] aic94xx: fix sequencer hang on error recovery
    [SCSI] st: compile fix when DEBUG set to one
    [SCSI] stex: stex_internal_copy should be called with sg_count in struct st_ccb
    [SCSI] stex: stex_direct_copy shouldn't call dma_map_sg
    [SCSI] lpfc: Balance locking
    [SCSI] qla4xxx: fix up residual handling
    [SCSI] libsas: fix error handling
    [SCSI] arcmsr: fix message allocation
    [SCSI] mptbase: fix use-after-free's
    [SCSI] iscsi transport: make 2 functions static
    [SCSI] lpfc: make lpfc_disable_node() static
    [SCSI] ips: fix data buffer accessors conversion bug
    [SCSI] gdth: don't call pci_free_consistent under spinlock
    [SCSI] qla2xxx: fix compile warning for printk format
    [SCSI] aic7xx: mitigate HOST_MSG_LOOP invalid SCB ff panic
    [SCSI] scsi_debug: disable clustering
    ...

    Linus Torvalds
     

23 Feb, 2008

2 commits

  • The current sas_scsi_clear_queue_lu() is wrongly checking for commands
    which match the pointer to the one passed in. It should be checking for
    commands which are on the same logical unit as the one passed in. Fix
    this by checking target pointer and LUN for equality.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • The libsas error handler has two fairly fatal bugs

    1. scsi_sas_task_done calls scsi_eh_finish_cmd() too early. This
    happens if the task completes after it has been aborted but before
    the error handler starts up. Because scsi_eh_finish_cmd()
    decrements host_failed and adds the task to the done list, the
    error handler start check (host_failed == host_busy) never passes
    and the eh never starts.

    2. The multiple task completion paths sas_scsi_clear_queue_... all
    simply delete the task from the error queue. This causes it to
    disappear into the ether, since a command must be placed on the
    done queue to be finished off by the error handler. This behaviour
    causes the HBA to hang on pending commands.

    Fix 1. by moving the SAS_TASK_STATE_ABORTED check to an exit clause at
    the top of the routine and calling ->scsi_done() unconditionally (it
    is a nop if the timer has fired). This keeps the task in the error
    handling queue until the eh starts.

    Fix 2. by making sure every task goes through task complete followed
    by scsi_eh_finish_cmd().

    Tested this by firing resets across a disk running a hammer test (now
    it actually survives without hanging the system)

    Signed-off-by: James Bottomley

    James Bottomley
     

19 Feb, 2008

1 commit

  • that provided by the block layer

    ATA requires that all DMA transfers begin and end on word boundaries.
    Because of this, a large amount of machinery grew up in ide to adjust
    scatterlists on this basis. However, as of 2.5, the block layer has a
    dma_alignment variable which ensures both the beginning and length of a
    DMA transfer are aligned on the dma_alignment boundary. Although the
    block layer does adjust the beginning of the transfer to ensure this
    happens, it doesn't actually adjust the length, it merely makes sure
    that space is allocated for transfers beyond the declared length. The
    upshot of this is that scatterlists may be padded to any size between
    the actual length and the length adjusted to the dma_alignment safely
    knowing that memory is allocated in this region.

    Right at the moment, SCSI takes the default dma_aligment which is on a
    512 byte boundary. Note that this aligment only applies to transfers
    coming in from user space. However, since all kernel allocations are
    automatically aligned on a minimum of 32 byte boundaries, it is safe to
    adjust them in this manner as well.

    tj: * Adjusting sg after padding is done in block layer. Make libata
    set queue alignment correctly for ATAPI devices and drop broken
    sg mangling from ata_sg_setup().
    * Use request->raw_data_len for ATAPI transfer chunk size.
    * Killed qc->raw_nbytes.
    * Separated out killing qc->n_iter.

    Signed-off-by: James Bottomley
    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    James Bottomley
     

26 Jan, 2008

3 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (200 commits)
    [SCSI] usbstorage: use last_sector_bug flag universally
    [SCSI] libsas: abstract STP task status into a function
    [SCSI] ultrastor: clean up inline asm warnings
    [SCSI] aic7xxx: fix firmware build
    [SCSI] aacraid: fib context lock for management ioctls
    [SCSI] ch: remove forward declarations
    [SCSI] ch: fix device minor number management bug
    [SCSI] ch: handle class_device_create failure properly
    [SCSI] NCR5380: fix section mismatch
    [SCSI] sg: fix /proc/scsi/sg/devices when no SCSI devices
    [SCSI] IB/iSER: add logical unit reset support
    [SCSI] don't use __GFP_DMA for sense buffers if not required
    [SCSI] use dynamically allocated sense buffer
    [SCSI] scsi.h: add macro for enclosure bit of inquiry data
    [SCSI] sd: add fix for devices with last sector access problems
    [SCSI] fix pcmcia compile problem
    [SCSI] aacraid: add Voodoo Lite class of cards.
    [SCSI] aacraid: add new driver features flags
    [SCSI] qla2xxx: Update version number to 8.02.00-k7.
    [SCSI] qla2xxx: Issue correct MBC_INITIALIZE_FIRMWARE command.
    ...

    Linus Torvalds
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: (67 commits)
    fix drivers/ata/sata_fsl.c double-decl
    [libata] Prefer SCSI_SENSE_BUFFERSIZE to sizeof()
    pata_legacy: Merge winbond support
    ata_generic: Cenatek support
    pata_winbond: error return
    pata_serverworks: Fix cable types and cosmetics
    pata_mpc52xx: remove un-needed assignment
    libata: fix off-by-one in error categorization
    ahci: factor out AHCI enabling and enable AHCI before reading CAP
    ata_piix: implement SIDPR SCR access
    ata_piix: convert to prepare - activate initialization
    libata: factor out ata_pci_activate_sff_host() from ata_pci_one()
    [libata] Prefer SCSI_SENSE_BUFFERSIZE to sizeof()
    pata_legacy: resychronize with upstream changes and resubmit
    [libata] pata_legacy: typo fix
    [libata] pata_winbond: update for new ->data_xfer hook
    pata_pcmcia: convert to new data_xfer prototype
    libata annotations and fixes
    libata: use dev_driver_string() instead of "libata" in libata-sff.c
    ata_piix: kill unused constants and flags
    ...

    Linus Torvalds
     
  • Break out the frame processor for STP tasks from aic94xx so they can
    be shared by other SAS HBA's

    Original patch from Jeff Garzik

    Signed-off-by: James Bottomley

    James Bottomley