- 13 10月, 2007 40 次提交
-
-
由 Matthew Wilcox 提交于
Replace ASC_DBG{,1,2,3,4,5} with a single variadic macro ASC_DBG. As suggested by Jeff Garzik, include DRV_NAME and __FUNCTION__ in the output. Change all callers to no longer include the function name in the string. Enabling ADVANSYS_DEBUG to test this feature shows a lot of other problems that need to be fixed: - Reorder asc_prt_* functions now that their prototypes have been removed. - There is no longer a struct device in ASC_DVC_CFG/ADV_DVC_CFG, and it wasn't necessarily a PCI device to begin with. Print the bus_id from asc_board->dev instead. - isr_callback no longer exists. - ASC_DBG_PRT_SCSI_CMND isn't being used, so delete asc_prt_scsi_cmnd too. - A missing semicolon Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
With the ASC and ADV libraries merged into the driver, there really is no point in reporting their version numbers, or even trying to maintain them. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
asc_board_t was simply a typedef for struct asc_board. ASC_BOARDP() can be replaced by shost_priv() except in the ASC_STATS* macros which rely on the cast; add an explicit cast there. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
There were two blocks of ASC_IERR definitions; one for narrow and one for wide boards. Some of the same names were used (with the same values), and some of the same values were used with different names. This could only lead to confusion, so I unified them in one block of definitions with no overlapping values. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The interrupt number was being stored in 4-5 different places, each with its own type, rules and usage. Fix this by keeping an unsigned int in the struct asc_board, and filling it in from the bus probe functions (since it's different for each of the four bus types). In order to do this, we have to allocate the Scsi_Host in the bus probe functions too. Then we can return an error from advansys_board_found, which requires a little rearranging of code (and removing of the err_code variable). Move the Wide Board flag setting into the PCI bus probe function. Split the AscGetChipIRQ function into three functions (one for each bus type that needs it) and add some commentary to explain what's going on. Also get rid of the AscSetChipIRQ function as we only ever set the interrupt number to the same value it already had. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
Replace it with !ASC_NARROW_BOARD Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
It was only ever set; never tested, nor cleared. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
- Don't need to set ASC_HOST_IN_RESET any more - Don't need to test scp->device->host for NULL -- if it's NULL, we couldn't've been called. - Use scmd_printk instead of ASC_PRINT Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The narrow board used two global structures to set up a command; unfortunately they weren't locked, so with two boards in the machine, one call to queuecommand could corrupt the data being used by the other call to queuecommand. Fix this by allocating asc_scsi_q on the stack (64 bytes) and using kmalloc for the asc_sg_head (2k) Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The wide and narrow boards share identical handling of the return value, except for some trivial error messages. Move the handling to the common end of the function. Also move variable declarations to the arms of the `if' that they're used in and delete some pointless comments. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The driver was saving a scsi_device for each target, but wasn't doing anything useful with them. Just delete the array. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
Rearrange a lot of the functions in the file to get rid of all the forward declarations. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The ULD ->done callback moves into the scsi_driver. By moving the call to scsi_io_completion() from scsi_blk_pc_done() to scsi_finish_command(), we can eliminate the latter entirely. By returning 'good_bytes' from the ->done callback (rather than invoking scsi_io_completion()), we can stop exporting scsi_io_completion(). Also move the prototypes from sd.h to sd.c as they're all internal anyway. Rename sd_rw_intr to sd_done and rw_intr to sr_done. Inspired-by: NChristoph Hellwig <hch@infradead.org> Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The ->done member was being used to mark commands as being internal. I decided to put a magic number in ->underflow instead. I believe this to be safe as no current user of ->underflow has any of the bottom 9 bits set. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
By configuring targets in slave_configure, we can eliminate a shadow queuecommand, a shadow scsi_done, a write to the host template, abuse of SCp->Message and SCp->Status, a use of kmap_atomic() and sniffing the results of INQUIRY. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Acked-by: NDavid S. Miller <davem@davemloft.net> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Rob Landley 提交于
Update Documentation/scsi/00-INDEX to match current files. Signed-off-by: NRob Landley <rob@landley.net> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Jeff Garzik 提交于
The SSP response DPRINTK in asd_get_response_tasklet() was printing a hardcoded status result, rather than the status from the SSP response IU. Arguably, this should not be a DPRINTK either, since the admin might want to know about this. Signed-off-by: NJeff Garzik <jeff@garzik.org> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Eric Moore 提交于
drivers/message/fusion/mptctl.c: In function ‘mptctl_mpt_command’: drivers/message/fusion/mptctl.c:1764: warning: ‘bufIn.len’ may be used uninitialized in this function drivers/message/fusion/mptctl.c:1765: warning: ‘bufOut.len’ may be used uninitialized in this function come because gcc gets confused by some "goto" statements in above function. The warnings have been verified to be bogus, however, the function does initialize these later (after the offending goto's) in the function anyway. So let's move those initializations to top of function, thereby also shutting up these warnings. Signed-off-by: NEric Moore <Eric.Moore@lsi.com> Signed-off-by: NSatyam Sharma <satyam@infradead.org> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Eric Moore 提交于
NB = number of blocks. This represents the number of blocks to transfer. The block size is based on the message frame size provided in the ioc_facts. A value of zero indicates the entire message frame should be copied. This is two bit value. So by setting this to non-zero vaule, you increase performance by reducing amount of data needing to be dma'd. The value that is stored in ioc->ReqeustNB is sometimes a non-zero vaule, which creates a bug in mptlan, where not the entire message frame is getting transfer to firware, resulting in corruption. This fix sets the default to zero, thus entire message frame is copied. Signed-off-by: NEric Moore <Eric.Moore@lsi.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Eric Moore 提交于
Cleaning up prints that use the xxx_printk API, in that the fusion preamble "mptbase: iocX" follows the info provided by the print API. The way its currently coded, the [H:C:T] print in sdev_printk will be inbetween "mptbase" and "iocX", instead of before. Signed-off-by: NEric Moore <Eric.Moore@lsi.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Eric Moore 提交于
ScsiLookup is an array of pending scmd pointers that the scsi lld maintains. This array is touched from queuecommand, eh threads, and interrupt context. This array should put under locks, hence this patch to synchronize its access. I've added some nice little function wrappers for this, and moved the ScsiLookup array over to MPT_ADAPTER struct. Signed-off-by: NEric Moore <Eric.Moore@lsi.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Eric Moore 提交于
List below is output from C=2 sparse compilation, which are fixed with this patch. 1) mptspi: pg0 is defined in x86 version of include/asm/pgtable.h 2) mptsas: context imbalance in 'mptsas_probe' different lock contexts for basic block 3) mptbase: from mpt_attach - cast adds address space to expression 4) mptbase: from mpt_do_upload - request[] is bad constant expression Signed-off-by: NEric Moore <Eric.Moore@lsi.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Eric Moore 提交于
The driver is currently typecasting to obtain the shost hostdata. The driver is updated to use the shost_priv macro. Signed-off-by: NEric Moore <Eric.Moore@lsi.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
All these drivers meant to call ->scsi_done() but got confused. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
We can simply call the internal done function directly Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 James Bottomley 提交于
Because scsi_print_sense_hdr prefixes with KERN_INFO, the output from scsi_io_completion looks like: sd 0:0:0:0: [sdb] Device not ready: <6>: Sense Key : 0x2 [current] : ASC=0x4 ASCQ=0x3 By using scsi_show_sense_hdr, we can get the much more appealing output: sd 0:0:0:0: [sdb] Device not ready: Sense Key : 0x2 [current] sd 0:0:0:0: [sdb] Device not ready: ASC=0x4 ASCQ=0x3 Acked-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The pid field is a duplicate of the serial_number field and has been scheduled for removal for a long time. A few drivers were still using it, so just change them to use serial_number instead. Signed-off-by: NMatthew Wilcox <willy@linux.intel.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Kay Sievers 提交于
Signed-off-by: NKay Sievers <kay.sievers@vrfy.org> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Bernhard Walle 提交于
This patch just makes the version number in ips.c and ips.h consistent. It seems that this has been forgotten in a60768e2. It also removes code duplication, each number is now only once in the code to avoid similar errors in the future. Signed-off-by: NBernhard Walle <bwalle@suse.de> Acked-by: NMark Salyzyn <aacraid@adaptec.com> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
We were releasing the IRQ before removing the host, so commands could still be coming in which would never be seen by the interrupt handler. Just remove the host before releasing the IRQ to close this race. Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
If an error occurred during initialisation, we would sometimes fail to call scsi_host_put() and thus end up with a leaked scsi_host. It was also possible to miss calling scsi_remove_host(). Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
If scsi_add_host returned an error, the host would never be freed. We need to call scsi_host_put() if an error happens. Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
We were releasing the IRQ before removing the host, so commands could still be coming in which would never be seen by the interrupt handler. Just remove the host before releasing the IRQ to close this race. Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
We were releasing the IRQ before removing the host, so commands could still be coming in which would never be seen by the interrupt handler. Just remove the host before releasing the IRQ to close this race. Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
Since ncr53c8xx_attach() calls scsi_host_put(), make ncr53c8xx_release() call scsi_host_put() too, for symmetry. Both callers already expect it to put the host for them, so that works out nicely. While the zalon driver does 'use' the host pointer afterwards, it only compares it for equality and doesn't dereference it, so that's safe. While I'm at it, get rid of pointless checks for NULL, use shost_priv() and change ncr53c8xx_release to return void. Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
We were releasing the block devices before removing the host, so commands could still be coming in which would cause a panic. Just remove the host before releasing the block devices to close this race. Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
There was a missing call to scsi_host_put() causing us to leak a scsi host every time this module was unloaded. Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
If kthread_run failed, we would fail to scan the host, and leak the allocated async_scan_data. Since using a separate thread is just an optimisation, do the scan synchronously if we fail to spawn a thread. Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 Matthew Wilcox 提交于
The current code prints: scsi 13:0:4:0: scsi: Device offlined - not ready after error recovery which is repetitively redundant. This patch changes that message to: scsi 6:0:6:0: Device offlined - not ready after error recovery Signed-off-by: NMatthew Wilcox <matthew@wil.cx> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-
由 James Bottomley 提交于
sg uses a scheme to reallocate a single contiguous array of all its pointers for lookup and management. This didn't matter too much when sg could only attach 256 nodes, but now the maximum has been bumped up to 32k we're starting to push the limits of the maximum allocatable contiguous memory. The solution to this is to eliminate the static array and do everything via idr, which this patch does. Acked-by: NDouglas Gilbert <dougg@torque.net> Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
-