- 01 6月, 2015 18 次提交
-
-
由 Robert Elliott 提交于
refactor error cleanup and shutdown disable interrupts and pci_disable_device on critical failures add hpsa_free_cfgtables function Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
replace calls to hpsa_free_irqs_and_disable_msix with hpsa_free_irqs and hpsa_disable_interrupt_mode Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Joe Handzik 提交于
get drive queue depth to help avoid task set full conditions. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NJoe Handzik <joseph.t.handzik@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Joe Handzik 提交于
use ioaccel2 path to submit I/O to physical drives in HBA mode Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NJoe Handzik <joseph.t.handzik@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
offload_enabled changes are deferred until after the added/updated prints occur, so the values are incorrect. defer printing SSD Smart Path Enabled status information until the information is correct Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Webb Scales 提交于
clean up command submission Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Stephen Cameron 提交于
allow the controller firmware to queue up commands when the ioaccel device queue is full. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Stephen Cameron 提交于
add error handling for failure when registering with SCSI subsystem. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Stephen Cameron 提交于
Factor out hpsa_cmd_init from cmd_alloc(). We also need this for resubmitting commands down the default RAID path when they have returned from the ioaccel paths with errors. In particular, reinitialize the cmd_type and busaddr fields as these will not be correct for submitting down the RAID stack path after ioaccel command completion. This saves time when submitting commands. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
make function names more consistent and meaningful Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Stephen Cameron 提交于
expose a detected lockup via sysfs Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Stephen Cameron 提交于
In hba mode, we could get sense data in descriptor format so we need to handle that. It's possible for CommandStatus to have value 0x0D "TMF Function Status", which we should handle. We will get this from a P1224 when aborting a non-existent tag, for example. The "ScsiStatus" field of the errinfo field will contain the TMF function status value. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Stephen Cameron 提交于
make tracking of outstanding commands more robust Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Stephen Cameron 提交于
Do not send aborts to logical devices that do not support aborts Instead of relying on what the Smart Array claims for supporting logical drives, simply try an abort and see how it responds at device discovery time. This way devices that do support aborts (e.g. MSA2000) can work and we do not waste time trying to send aborts to logical drives that do not support them (important for high IOPS devices.) While rescanning devices only test whether devices support aborts the first time we encounter a device rather than every time. Some Smart Arrays required aborts to be sent with tags in the wrong endian byte order. To avoid having to know about this, we would send two aborts with tags with each endian order. On high IOPS devices, this turns out to be not such a hot idea. So we now have a list of the devices that got the tag backwards, and we only send it one way. If all available commands are outstanding and the abort handler is invoked, the abort handler may not be able to allocate a command and may busy-wait excessivly. Reserve a small number of commands for the abort handler and limit the number of concurrent abort requests to the number of reserved commands. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Webb Scales 提交于
Allow driver initiated commands to have a timeout. It does not yet try to do anything with timeouts on such commands. We are sending a reset in order to get rid of a command we want to abort. If we make it return on the same reply queue as the command we want to abort, the completion of the aborted command will not race with the completion of the reset command. Rename hpsa_scsi_do_simple_cmd_core() to hpsa_scsi_do_simple_cmd(), since this function is the interface for issuing commands to the controller and not the "core" of that implementation. Add a parameter to it which allows the caller to specify the reply queue to be used. Modify existing callers to specify the default reply queue. Rename __hpsa_scsi_do_simple_cmd_core() to hpsa_scsi_do_simple_cmd_core(), since this routine is the "core" implementation of the "do simple command" function and there is no longer any other function with a similar name. Modify the existing callers of this routine (other than hpsa_scsi_do_simple_cmd()) to instead call hpsa_scsi_do_simple_cmd(), since it will now accept the reply_queue paramenter, and it provides a controller lock-up check. (Also, tweak two related message strings to make them distinct from each other.) Submitting a command to a locked up controller always results in a timeout, so check for controller lock-up before submitting. This is to enable fixing a race between command completions and abort completions on different reply queues in a subsequent patch. We want to be able to specify which reply queue an abort completion should occur on so that it cannot race the completion of the command it is trying to abort. The following race was possible in theory: 1. Abort command is sent to hardware. 2. Command to be aborted simultaneously completes on another reply queue. 3. Hardware receives abort command, decides command has already completed and indicates this to the driver via another different reply queue. 4. driver processes abort completion finds that the hardware does not know about the command, concludes that therefore the command cannot complete, returns SUCCESS indicating to the mid-layer that the scsi_cmnd may be re-used. 5. Command from step 2 is processed and completed back to scsi mid layer (after we already promised that would never happen.) Fix by forcing aborts to complete on the same reply queue as the command they are aborting. Piggybacking device rescanning functionality onto the lockup detection thread is not a good idea because if the controller locks up during device rescanning, then the thread could get stuck, then the lockup isn't detected. Use separate work queues for device rescanning and lockup detection. Detect controller lockup in abort handler. After a lockup is detected, return DO_NO_CONNECT which results in immediate termination of commands rather than DID_ERR which results in retries. Modify detect_controller_lockup() to return the result, to remove the need for a separate check. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Webb Scales 提交于
We had a mix of formats used for specifying controller, bus, target, and lun address of devices. change to the format used by the scsi midlayer and upper layer (2:3:0:0) so you can easily follow the information from hpsa to scsi midlayer to sd upper layer. Also add this information: - product ID - vendor ID - RAID level - SSD Smath Path capable and enabled - exposure level (sg-only) Example: hpsa 0000:04:00.0: added scsi 2:0:0:0: Direct-Access HP LOGICAL VOLUME RAID-0 SSDSmartPathCap+ En+ Exp=4 scsi 2:0:0:0: Direct-Access HP LOGICAL VOLUME 10.0 PQ: 0 ANSI: 5 sd 2:0:0:0: [sdr] 12501713072 512-byte logical blocks: (6.40 TB/5.82 TiB) sd 2:0:0:0: [sdr] 4096-byte physical blocks sd 2:0:0:0: [sdr] Attached SCSI disk sd 2:0:0:0: Attached scsi generic sg20 type 0 Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Stephen Cameron 提交于
Cache the ioaccel handle so that when we need to abort commands sent down the ioaccel2 path, we can look up the LUN ID in h->dev[] instead of having to do I/O to the controller. Add a field to elements in h->dev[] to keep track of how the device is exposed to the SCSI mid layer: Not at all, without an upper level driver (no_uld_attach) or normally exposed. Since masked physical devices are now present in h->dev[] array it would be perfectly possible to do echo scsi add-single-device 2 2 0 0 > /proc/scsi/scsi and bring them online. This was previously not allowed for masked physical devices. Ensure that the mapping of physical disks to logical drives gets updated in a consistent way when a RAID migration occurs and is not touched until updates to it are complete. now instead of doing CISS_REPORT_PHYSICAL to get the LUNID for the physical disk in hpsa_get_pdisk_of_ioaccel2(), just get it out of h->dev[] where we already have it cached. do not touch phys_disk[] for ioaccel enabled logical drives during rescan Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Tomas Henzl 提交于
The hpsa driver touches the hardware before checking the pci-id table. This way, especially in kdump, it may confuse the proper driver (cciss). Signed-off-by: NTomas Henzl <thenzl@redhat.com> Acked-by: NDon Brace <Don.Brace@pmcs.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 10 3月, 2015 1 次提交
-
-
由 Rusty Russell 提交于
This may be OK in archs with contiguous CPU numbers and without hotplug CPUs, but it sets a terrible example. And open-coding it like drivers/scsi/hpsa.c is just weird. BTRFS has a weird comparison with num_online_cpus() too, but since BTRFS just screwed up my test machines' root partition, I'm not touching it :) Signed-off-by: NRusty Russell <rusty@rustcorp.com.au> Reported-by: NOleg Drokin <green@linuxhacker.ru>
-
- 16 2月, 2015 1 次提交
-
-
由 Don Brace 提交于
Correct compiler warning introduced by hpsa-add-local-workqueue patch 6636e7f4 hpsa: Use local workqueues instead of system workqueues Suggested-by: NKees Cook <keescook@chromium.org> Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 03 2月, 2015 20 次提交
-
-
由 Don Brace 提交于
Suggested-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NWebb Scales <webbnh@hp.com> Reviewed-by: NKevin Barnett <Kevin.Barnett@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Don Brace 提交于
Add in P840ar model name for gen9 Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Don Brace 提交于
Add in gen9 controller model names Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Robert Elliott 提交于
Detect failues when attempting to change controller to use simple or performant transport modes (mode change ack) rather than just proceeding ahead after timeouts. Return values are added to: hpsa_put_ctlr_into_performant_mode hpsa_wait_for_mode_change_ack and all their callers check/propagate the result. More consistency in printing errors and whether dev_err is used. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Robert Elliott 提交于
Shorten the wait for the CISS configuration table doorbell mode change acknowledgment from 300-600 s to 20 s, which is the value specified in the CISS specification that should be honored by all controllers. Wait using interruptible msleep() rather than uninterruptible usleep_range(), which triggers rt_sched timeout errors if the wait is long. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Webb Scales 提交于
Hoist the conditional out of do_not_scan_if_controller_locked_up() and place it in the caller (this improves the code structure, making it more consistent with other uses and enabling tail-call optimization); rename the function to hpsa_scan_complete(), and use it at the end of hpsa_scan_start() as well. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Webb Scales 提交于
Move the code which sets up the SG descriptor out of hpsa_scatter_gather() and into a subroutine where it can be reused (in the next patch). The Ext field is now assigned unconditionally: this makes the refactor much simpler, but more importantly it removes a conditional operation from inside the loop. The case for which the conditional formerly tested is now executed (unconditionally) after the loop is exited. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen Cameron 提交于
Performance tweak, avoid unnecessary function calls. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen Cameron 提交于
Printing the address of the command pointer is of little value, change to print the CDB. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen Cameron 提交于
There's no reason for it to be a void *, it should be a struct scsi_cmnd * Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Don Brace 提交于
Returning failed from the device reset handler will get the device kicked offline, which is fine if the controller is locked up anyhow. Cannot abort a command from a failed controller. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NJustin Lindley <justin.lindley@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen Cameron 提交于
Command allocation is the thing that takes the longest in the main i/o path, so check for controller lockup immediately after this to prevent submitting commands to locked up controller as much as possible. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen Cameron 提交于
In the code that translates logical drive LBAs to physical drive LBAs if we overflow the raid map disk data array we will get the wrong answers. We do not expect that to happen, but best to be on the safe side and guard against it anyway. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen Cameron 提交于
Acking controller events on controllers that do not support it can cause such controllers to lock up. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NJoe Handzik <joseph.t.handzik@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen Cameron 提交于
In set_encrypt_ioaccel2() and in hpsa_scsi_ioaccel_raid_map there were BUG_ONs that looked like this: BUG_ON(!(dev->offload_config && dev->offload_enabled)); But, In hpsa_ack_ctlr_events() we have this, /* Stop sending new RAID offload reqs via the IO accelerator */ scsi_block_requests(h->scsi_host); for (i = 0; i < h->ndevices; i++) h->dev[i]->offload_enabled = 0; hpsa_drain_accel_commands(h); So, we set offload_enabled = 0 for all drives, then do this drain_accel_commands, so that means accel commands could still be in flight, ie. perhaps having just been submitted into hpsa_scsi_ioaccel_raid_map concurrent with ->offload_enabled having just been set to zero. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Don Brace 提交于
Performance enhancement. Remove spin_locks from the driver. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Robert Elliott 提交于
Empirically, this improves performance slightly (~2% max IOPS) by allowing cmd_alloc to remember where it left off searching for free commands between calls instead of always starting its search at command 0. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Webb Scales 提交于
This means changing the allocator to reference count commands. The reference count is now the authoritative indicator of whether a command is allocated or not. The h->cmd_pool_bits bitmap is now only a heuristic hint to speed up the allocation process, it is no longer the authoritative record of allocated commands. Since we changed the command allocator to use reference counting as the authoritative indicator of whether a command is allocated, fail_all_outstanding_cmds needs to use the reference count not h->cmd_pool_bits for this purpose. Fix hpsa_drain_accel_commands to use the reference count as the authoritative indicator of whether a command is allocated instead of the h->cmd_pool_bits bitmap. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Don Brace 提交于
When using the ioaccel submission methods, requests destined for RAID volumes are sometimes diverted to physical devices. The OS has no or limited knowledge of these physical devices, so it is up to the driver to avoid pushing the device too hard. It is better to honor the physical device queue limit rather than making the device spew zillions of TASK SET FULL responses. This is so that hpsa based devices support /sys/block/sdNN/device/queue_type of simple, which lets the SCSI midlayer automatically adjust the queue_depth based on TASK SET FULL and GOOD status. Adjust the queue depth for a new device after it is created based on the maximum queue depths of the physical devices that constitute the device. This drops the maximum queue depth from .can_queue of 1024 to something like 174 for single-drive RAID-0, 348 for two-drive RAID-1, etc. It also adjusts for the ratio of data to parity drives. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Don Brace 提交于
Instead of kicking the commands all the way back to the mid layer, use a work queue. This enables having a mechanism for the driver to be able to resubmit the commands down the "normal" raid path without turning off the ioaccel feature entirely whenever an error is encountered on the ioaccel path, and prevent excessive rescanning of devices. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-