aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
Commit message (Collapse)AuthorAgeFilesLines
* Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6Linus Torvalds2005-12-212-14/+93
|\
| * [SCSI] fix scsi_reap_target() device_del from atomic contextJames Bottomley2005-12-171-10/+38
| | | | | | | | | | | | | | | | | | scsi_reap_target() was desgined to be called from any context. However it must do a device_del() of the target device, which may only be called from user context. Thus we have to reimplement scsi_reap_target() via a workqueue. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] fix for fc transport recursion problem.James.Smart@Emulex.Com2005-12-151-4/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the scenario that a link was broken, the devloss timer for each rport was expire at roughly the same time, causing lots of "delete" workqueue items being queued. Depth is dependent upon the number of rports that were on the link. The rport target remove calls were calling flush_scheduled_work(), which would interrupt the stream, and start the next workqueue item, which did the same thing, and so on until recursion depth was large. This fix stops the recursion in the initial delete path, and pushes it off to a host-level work item that reaps the dead rports. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* | [PATCH] dpt_i2o fix for deadlock conditionSalyzyn, Mark2005-12-181-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Miquel van Smoorenburg <miquels@cistron.nl> forwarded me this fix to resolve a deadlock condition that occurs due to the API change in 2.6.13+ kernels dropping the host locking when entering the error handling. They all end up calling adpt_i2o_post_wait(), which if you call it unlocked, might return with host_lock locked anyway and that causes a deadlock. Signed-off-by: Mark Salyzyn <aacraid@adaptec.com> Cc: James Bottomley <James.Bottomley@steeleye.com> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* | [PATCH] iscsi gfp_t annotationsAl Viro2005-12-152-2/+2
|/ | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6Linus Torvalds2005-12-1413-81/+64
|\
| * [SCSI] Consolidate REQ_BLOCK_PC handling path (fix ipod panic)James Bottomley2005-12-134-62/+26
| | | | | | | | | | | | | | | | This follows on from Jens' patch and consolidates all of the ULD separate handlers for REQ_BLOCK_PC into a single call which has his fix for our direction bug. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] Negotiate correctly with async-only devicesMatthew Wilcox2005-12-131-2/+2
| | | | | | | | | | | | | | | | | | | | When we got a device only capable of async, we would zero out goal->period which would cause us to try PPR negotiations. Leave goal->period alone, and check goal->offset before doing PPR. Kudos to Daniel Forsgren for figuring this out. Signed-off-by: Matthew Wilcox <matthew@wil.cx> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] fix double free of scsi request queueBrian King2005-12-121-1/+0
| | | | | | | | | | | | | | | | | | Current scsi scanning code appears to have a use after free bug is a LLDD's slave_alloc fails. Remove the redundant scsi_free_queue. Signed-off-by: Brian King <brking@us.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] fix panic when ejecting ieee1394 ipodJens Axboe2005-12-091-4/+4
| | | | | | | | | | | | | | | | | | The scsi_library routines don't correctly set DMA_NONE when req->data_len is zero (instead they check the command type first, so if it's write, we end up with req->data_len == 0 and direction as DMA_TO_DEVICE which confuses some drivers) Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] fix OOPS due to clearing eh_action prior to aborting eh commandMichael Reed2005-12-081-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | The eh_action semaphore in scsi_eh_send_command is cleared after a command timeout. The command is subsequently aborted and the abort will try to call scsi_done() on it. Unfortunately, the scsi_eh_done() routine unconditinally completes the semaphore (which is now null). Fix this race by makiong the scsi_eh_done() routine check that the semaphore is non null before completing it (mirroring the ordinary command done/timeout logic). Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] Fix incorrect pointer in megaraid.c MODE_SENSE emulationMark Lord2005-12-081-1/+1
| | | | | | | | | | | | | | | | | | | | The SCSI megaraid drive goes to great effort to kmap the scatterlist buffer (if used), but then uses the wrong pointer when copying to it afterward. Signed-off-by: Mark Lord <lkml@rtr.ca> Acked by: Ju, Seokmann <Seokmann.Ju@engenio.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] qla2xxx: Correct short-WRITE status handling.Andrew Vasquez2005-12-071-0/+15
| | | | | | | | | | | | | | | | Properly check FC_RESID for any non-transfered bytes regardless of firmware completion status. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] qla2xxx: Correct mis-handling of AENs.Andrew Vasquez2005-12-072-12/+4
| | | | | | | | | | | | | | | | | | | | | | | | A regression in a recent change 33135aa2a568ec1a30e734f18e5315e10516e4f3 caused the driver to mistakenly drop handling of AENs. Due to the incorrect handling, ports would not reappear after RSCNs and LIPs. Drops unused/incorrect compound #define from qla_def.h. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] ibmvscsi kexec fixDave C Boutcher2005-12-073-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | This makes ibmvscsi work correctly with the recent set of kexec patches that went in. This is based on work by Michael Ellerman, who chased this initially. He validated that it works during kexec. Handle kexec correctly in ibmvscsi. During kexec the adapter will not get cleaned up correctly, so we may need to reset it to make it sane again. Signed-off-by: Dave Boutcher <sleddog@us.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* | [libata] mark certain hardware (or drivers) with a no-atapi flagJeff Garzik2005-12-134-10/+15
| | | | | | | | | | | | | | | | | | | | Some hardware does not support the PACKET command at all. Other hardware supports ATAPI, but the driver does something nasty such as calling BUG() when an ATAPI command is issued. For these such cases, we mark them with a new flag, ATA_FLAG_NO_ATAPI. Initial version contributed by Ben Collins.
* | [PATCH] libata-core.c: fix parameter bug on kunmap_atomic() callsMark Lord2005-12-121-2/+2
| | | | | | | | | | | | | | | | | | Fix incorrect pointer usage on two calls to kunmap_atomic(). This seems to happen a lot, because kunmap() wants the struct page *, whereas kunmap_atomic() instead wants the mapped virtual address. Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] Fix SCSI scanning slab corruptionBrian King2005-12-121-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a double free in the scsi scan code if a LLDD's slave_alloc() call fails. There is a direct call to scsi_free_queue and then the following put_device calls the release function, which also frees the queue. Remove the redundant scsi_free_queue. Signed-off-by: Brian King <brking@us.ibm.com> Tested-by: Nathan Lynch <ntl@pobox.com> [ Also removed some strange whitespace artifacts in that area ] Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* | Revert revert of "[SCSI] fix usb storage oops"Linus Torvalds2005-12-121-1/+8
|/ | | | | | | | | | | | | | | | | | | This reverts commit 1b0997f561bf46689cc6e0903f342e9bf2506bf1, which in turn reverted 34ea80ec6a02ad02e6b9c75c478c18e5880d6713 (which is thus re-instated). Quoth James Bottomley: "All it's doing is deferring the device_put() from the scsi_put_command() to after the scsi_run_queue(), which doesn't fix the sleep while atomic problem of the device release method. In both cases we still get the semaphore in atomic context problem which is caused by scsi_reap_target() doing a device_del(), which I assumed (wrongly) was valid from atomic context." who also promised to fix scsi_reap_target(). Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] libata: fix ata_scsi_pass_thru error handlingTejun Heo2005-12-031-2/+7
| | | | | | | | This patch makes ata_scsi_pass_thru() properly set result code and sense data on translation failures. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* Revert "[SCSI] fix usb storage oops"Linus Torvalds2005-12-021-8/+1
| | | | | | | | | This reverts commit 34ea80ec6a02ad02e6b9c75c478c18e5880d6713. It does a put_device() from softirq context, which is bad since it gets a semaphore for reading. Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6Linus Torvalds2005-12-027-17/+31
|\
| * [SCSI] sg: fix a bug in st_map_user_pages failure pathHugh Dickins2005-12-021-1/+3
| | | | | | | | | | | | | | | | | | | | | | sg's st_map_user_pages is modelled on an earlier version of st's sgl_map_user_pages, and has the same bug: if get_user_pages got some but not all of the pages, then those got were released, but the positive res code returned implied that they were still to be freed. Signed-off-by: Hugh Dickins <hugh@veritas.com> Signed-off-by: Douglas Gilbert <dougg@torque.net> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] sg and st unmap_user_pages allow PageReservedHugh Dickins2005-12-022-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2.6.15-rc1 made sg's st_unmap_user_pages and st's sgl_unmap_user_pages BUG on a PageReserved page. But that's wrong: they could be unmapping the ZERO_PAGE, which is marked PG_reserved; and perhaps others (while get_user_pages is still permitted on VM_PFNMAP areas - that may change). More change is needed here: sg claims to dirty even pages written from, and st claims not to dirty even pages read into; and SetPageDirty is not adequate for this nowadays. Fixes to those follow in a later patch: for the moment just fix the 2.6.15 regression. Signed-off-by: Hugh Dickins <hugh@veritas.com> Acked-by: Nick Piggin <npiggin@suse.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] st: fix a bug in sgl_map_user_pages failure path Hugh Dickins2005-12-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nick and I had already been looking at drivers/scsi/{sg.c,st.c}, brought there by __put_page in sg.c's peculiar sg_rb_correct4mmap, which we'd like to remove. But that's irrelevant to your pain, except... One extract from the patches I'd like to send Doug and Kai for 2.6.15 or 2.6.16 is this below: since the incomplete get_user_pages path omits to reset res, but has already released all the pages, it will result in premature freeing of user pages, and behaviour just like you've seen. Though I'd have thought incomplete get_user_pages was an exceptional case, and a bit surprised you'd encounter it. Perhaps there's some other premature freeing in the driver, and this instance has nothing whatever to do with it. If the problem were easily reproducible, it'd be great if you could try this patch; but I think you've said it's not :-( Signed-off-by: Kai Makisara <kai.makisara@kolumbus.fi> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] sym2: Disable IU and QAS negotiationMatthew Wilcox2005-12-011-1/+4
| | | | | | | | | | | | | | | | Enabling these features causes problems with some drives, so disable them until they're debugged Signed-off-by: Matthew Wilcox <matthew@wil.cx> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aacraid: Check scsi_bios_ptabe return codeMark Haverkamp2005-12-011-0/+2
| | | | | | | | | | | | | | | | | | Received from Mark Salyzyn. scsi_bios_ptable return value is not being checked in aac_biosparm. Signed-off-by: Mark Haverkamp <markh@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] SPI DV: be more conservative about echo buffer usageJames Bottomley2005-12-011-9/+19
| | | | | | | | | | | | | | | | | | | | | | Some SCSI devices apparently get very confused if we try to use the echo buffer on a non-DT negotiated bus (this mirrors the problems of using PPR on non-LVD for some devices). The fix is to be far more conservative about when we use an echo buffer. With this patch, we'll now see what parameters are negotiated by the read only test, and only look for an echo buffer if DT is negotiated. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: reset handler selects a wrong commandVasily Averin2005-11-282-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To transport scsi reset command to device aic7xxx reset handler looks at the driver's pending_list and searches any proper command. However the search condition has been inverted: ahc_match_scb() returns TRUE if a matched command is found. As a result the reset on required devices did not turn out well, a correctly working neighbour device may be surprised by the reset. aic7xxx reset handler reports about the success, but really the original situation is not corrected yet. Signed-off-by: Vasily Averin <vvs@sw.ru> Naturally, there's a corresponding problem in the aic79xx driver, so I've also added the same fix for that. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* | [PATCH] fix megaraid.c lockingChristoph Hellwig2005-11-291-15/+14
|/ | | | | | | | | | | | | | This fixes locking in megaraid.c, namely: (1) make sure megaraid_queue release the adapter lock by changing the code to have a single return (2) remove the errornous scsi_assign_lock call Testing by Burton Windle. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Burton Windle <bwindle@fint.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] drivers/scsi/dpt_i2o.c: fix a NULL pointer dereferenceAdrian Bunk2005-11-271-4/+5
| | | | | | | | The Coverity checker spotted this obvious NULL pointer dereference. Signed-off-by: Adrian Bunk <bunk@stusta.de> Acked-by: Mark Salyzyn <mark_salyzyn@adaptec.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] Fix a bug in scsi_get_commandMatthew Dobson2005-11-221-1/+1
| | | | | | | | | | | scsi_get_command() attempts to write into a structure that may not have been successfully allocated. Move this write inside the if statement that ensures we won't panic the kernel with a NULL pointer dereference. Signed-off-by: Matthew Dobson <colpatch@us.ibm.com> Cc: James Bottomley <James.Bottomley@steeleye.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6Linus Torvalds2005-11-181-1/+1
|\
| * [PATCH] ide: remove ide_driver_t.owner fieldLaurent Riffard2005-11-181-1/+1
| | | | | | | | | | | | | | | | | | The structure ide_driver_t have a .owner field which is a duplicate of .gendriver.owner field (.gen_driver is a struct device_driver). This patch removes ide_driver_t's owner field. Signed-off-by: Laurent Riffard <laurent.riffard@free.fr> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
* | [libata sata_mv] update copyright, driver versionJeff Garzik2005-11-181-1/+2
| |
* | [PATCH] sil24: make error_intr less verboseTejun Heo2005-11-181-3/+9
| | | | | | | | | | | | | | | | | | | | sil24_error_intr logs all error interrupts. ATAPI devices generates many harmless errors which can be ignored and all serious ones are reported via sense data by SCSI layer. Don't log device errors from ATAPI devices. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] sil24: add ATAPI supportTejun Heo2005-11-181-26/+58
| | | | | | | | | | | | | | | | | | | | | | | | This patch implements ATAPI support for sil24 and bumps driver version to 0.23. Signed-off-by: Tejun Heo <htejun@gmail.com> -- Jeff, it has been converted to use ->dev_config as pointed out. Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] sil24: use SRST for phy_resetTejun Heo2005-11-181-10/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | There seems to be no way to obtain device signature from sil24 after SATA phy reset and SRST is needed anyway for later port multiplier suppport. This patch converts sil24_phy_reset to use SRST instaed. Signed-off-by: Tejun Heo <htejun@gmail.com> -- Jeff, I didn't remove the 10ms sleep just to be on the safe side. I think we can live with 10ms sleep on SRST. Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] sil24: add sil24_restart_controllerTejun Heo2005-11-181-3/+32
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | When an error condition is raised by device via D2H FIS or SDB. sil24 controller should be restarted by setting PORT_CS_INIT and waiting until PORT_CS_RDY is asserted instead of resetting the controller. This patch implements sil24_restart_controller for those cases. This patch also makes sure that PORT_CS_RDY is asserted on sil24_reset_controller completion. Signed-off-by: Tejun Heo <htejun@gmail.com> -- Jeff, delay is reduced to 1us and cnt increased to 10k. My sil3124 turns on PORT_CS_RDY on the second iteration even without any delay. I think 10k * 1us should be more than enough. I tried to convert both restart and reset to use msleep's with work queue, but if we do that, host_set lock should be released after initiating restart or reset, leading to race condition among reset/restart, other interrupts and timeout. Implementing synchronization among those in low-level driver doesn't seem right. Well, reduced timeout should work for the time being. Thanks. Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [libata sata_mv] handle lack of hardware nIEN supportJeff Garzik2005-11-171-1/+6
| | | | | | | | | | | Handle errata (it was unintentional on this h/w, whereas its intentional on others) whereby the nIEN bit in Device Control is ignored, leading to a situation where a hardware interrupt completes the qc before the polling code has a chance to. This will get fixed The Right Way(tm) once Albert Lee's irq-pio branch is merged, as the more natural PIO method on this hardware is interrupt-driven.
* [libata sata_mv] SATA probe, DMA boundary fixesJeff Garzik2005-11-171-18/+70
| | | | | | | | - DMA boundary was being handled incorrectly. Copied the code from ata_fill_sg(), since Marvell has the same DMA boundary needs. (we can't use ata_fill_sg directly since we have different hardware descriptors) - cleaned up the SATA phy reset code, to deal with various errata
* [libata] add timeout to commands for which we call wait_completion()Jeff Garzik2005-11-171-4/+28
|
* Merge branch 'upstream-fixes'Jeff Garzik2005-11-1611-90/+133
|\
| * [libata] bump versionsJeff Garzik2005-11-168-8/+8
| |
| * [libata ahci] tone down ATAPI errorsJeff Garzik2005-11-161-13/+15
| | | | | | | | | | | | | | | | | | ATA devices don't generate many errors, so the preferred method is to printk() when they occur. ATAPI devices generate tons of exceptions during the normal course of operation, so this change skips logging the most common class of errors.
| * [PATCH] libata: honor the transfer cycle time speficied by the EIDE deviceAlbert Lee2005-11-161-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following code segment is not functional because the transfer cycle time speficied by the EIDE device is later overwritten by ata_timing_quantize(): /* * If the drive is an EIDE drive, it can tell us it needs extended * PIO/MW_DMA cycle timing. */ if (adev->id[ATA_ID_FIELD_VALID] & 2) { /* EIDE drive */ memset(&p, 0, sizeof(p)); (snip) ata_timing_merge(&p, t, t, ATA_TIMING_CYCLE | ATA_TIMING_CYC8B); <== uninitialized "t" is used here } /* * Convert the timing to bus clock counts. */ ata_timing_quantize(s, t, T, UT); <== t is overwritten by quantized s The patch has been submitted for ide-timing.h before: http://marc.theaimsgroup.com/?l=linux-ide&m=110820013425454&w=2 Resubmitted for libata. Changes: - Minor fix to honor the following transfer cycle time speficied by the device - id[65]: Minimum Multiword DMA transfer cycle time per word - id[67]: Minimum PIO transfer cycle time without flow control - id[68]: Minimum PIO transfer cycle time with IORDY Signed-off-by: Albert Lee <albertcc@tw.ibm.com> ======= Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] sil24: add constantsTejun Heo2005-11-161-1/+20
| | | | | | | | | | | | | | | | Adds constants for ATAPI support to sata_sil24. This patch is originally from Jeff Garzik <jgarzik@pobox.com>. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [libata ahci] command completion fixes, improved debug msgsJeff Garzik2005-11-151-10/+15
| | | | | | | | | | | | | | | | | | - Fix a regression in command completion, which prevented the restart of the DMA engine after the device throws an error. - Pack more hardware info into the port-reset error message. - Promote "welcome to our timeout" message from debug msg to normal printk.
| * [libata] REQUEST SENSE handling fixesJeff Garzik2005-11-143-58/+43
| | | | | | | | | | | | | | | | - Move ATAPI check-condition handling out of the timeout handler - Use multi-qc-issue feature to issue REQUEST SENSE ATAPI PACKET command upon receiving an ATAPI check-condition. This cleans things up a lot, and eliminates a nasty recursion bug.
| * [libata] minor fixes, new helpersJeff Garzik2005-11-141-8/+3
| | | | | | | | | | | | | | | | | | | | - in ata_dev_identify(), don't assume that all devices are either ATA or ATAPI. In the future, this code will see port multipliers and other devices. - make a debugging printk less verbose - add new helper ata_qc_reinit() - add new helper BPRINTK() and port flag ATA_FLAG_DEBUGMSG, for fine-grained debugging use.