- 01 6月, 2015 1 次提交
-
-
由 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>
-
- 03 2月, 2015 6 次提交
-
-
由 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>
-
由 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>
-
由 Don Brace 提交于
By not doing maintaining a list of queued commands, we can eliminate some spin locking in the main i/o path and gain significant improvement in IOPS. Remove the queuing code and the code that calls it; remove now-unused interrupt code; remove DIRECT_LOOKUP_BIT. Now that the passthru commands share the same command pool as the main i/o path, and the total size of the pool is less than or equal to the number of commands that will fit in the hardware fifo, there is no need to check to see if we are exceeding the hardware fifo's depth. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Don Brace 提交于
Correct endiness issues reported by sparse. SA controllers are little endian. This patch ensures endiness correctness. Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 20 11月, 2014 3 次提交
-
-
由 Stephen M. Cameron 提交于
Using bit fields for hardware command fields isn't portable and relies on assumptions about how the compiler lays out the bits. We can fix this in the driver's internal command structure, but the ioctl interface we can't change because it is part of the userland ABI. Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NWebb Scales <webb.scales@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
The hardware needs little endian scatter gather addresses and lengths but we were not bothering to convert from cpu byte order as we should have been. On Intel, this is all just a bunch of no-ops macros, but it makes the code endian-clean(er). Signed-off-by: NDon Brace <don.brace@pmcs.com> Signed-off-by: NRobert Elliott <elliott@hp.com> Reviewed-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
We were allocating roughly double the amount of memory we should be due to ReportLUNdata and ExtendedReportLUNdata containing a non-zero sized array but adding extra memory to allocate as if the array were zero sized. Track the logical and physical sizes separately. Allocate the memory based on the specific data structure sizes. Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NWebb Scales <webb.scales@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 02 6月, 2014 4 次提交
-
-
由 Stephen M. Cameron 提交于
Make return value an int instead of an unsigned char so that we do not lose negative error return values. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reviewed-by: NWebb Scales <webb.scales@hp.com> Reported-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reviewed-by: NJoe Handzik <joseph.t.handzik@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
No sense having 8 or 16 reply queues if you only have 4 cpus, and likewise no sense limiting to 8 reply queues if you have many more cpus. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reviewed-by: NMike Miller <michael.miller@canonical.com> Reviewed-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
由 Stephen M. Cameron 提交于
Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Reviewed-by: NWebb Scales <webb.scales@hp.com> Signed-off-by: NChristoph Hellwig <hch@lst.de>
-
- 16 3月, 2014 16 次提交
-
-
由 Stephen M. Cameron 提交于
This allows exposing physical disks behind Smart Array controllers to the OS (if the controller has the right firmware and is in "hba" mode) Signed-off-by: NJoe Handzik <joseph.t.handzik@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
Do not expose drives that are undergoing a format immediately to the OS, instead wait until they are ready before bringing them online. This is so that logical drives created with "rapid parity initialization" do not get immediately kicked off the system for being unresponsive. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Scott Teel 提交于
Add controller-based data-at-rest encryption compatibility to ioaccel2 path (HP SSD Smart Path). Encryption feature requires driver to supply additional fields for encryption enable, tweak index, and data encryption key index in the ioaccel2 request structure. Encryption enable flag and data encryption key index come from raid_map data structure from raid offload command. During ioaccel2 submission, check device structure's raid map to see if encryption is enabled for the device. If so, call new function below. Add function set_encrypt_ioaccel2 to set encryption flag, data encryption key index, and calculate tweak value from request's logical block address. Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Scott Teel 提交于
Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Scott Teel 提交于
Underlying firmware cannot handle task abort on accelerated path (SSD Smart Path). Change abort requests for accelerated path commands to physical target reset. Send reset request on normal IO path. Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NMike Miller <michael.miller@canonical.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Scott Teel 提交于
Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NJoe Handzik <Joseph.T.Handzik@hp.com> Signed-off-by: NMike Miller <michael.miller@canonical.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Mike Miller 提交于
Signed-off-by: NMike Miller <michael.miller@canonical.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
For shared SAS configurations, hosts need to poll Smart Arrays periodically in order to be able to detect configuration changes such as logical drives being added or removed from remote hosts. A register on the controller indicates when such events have occurred, and the driver polls the register via a workqueue and kicks off a rescan of devices if such an event is detected. Additionally, changes to logical drive raid offload eligibility are autodetected in this way. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
This enables sending i/o's destined for RAID logical drives which can be serviced by a single physical disk down a different, faster i/o path directly to physical drives for certain logical volumes on SSDs bypassing the Smart Array RAID stack for a performance improvement. Signed-off-by: NMatt Gates <matthew.gates@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NMike Miller <michael.miller@canonical.com> Signed-off-by: NDon Brace <brace@beardog.cce.hp.com> Signed-off-by: NJoe Handzik <joseph.t.handzik@hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Matt Gates 提交于
For certain i/o's to certain devices (unmasked physical disks) we can bypass the RAID stack firmware and do the i/o to the device directly and it will be faster. Signed-off-by: NMatt Gates <matthew.gates@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Matt Gates 提交于
This is normally optional, but for SSD Smart Path support (in subsequent patches) it is required. Signed-off-by: NMatt Gates <matthew.gates@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Matt Gates 提交于
There is an extended report luns command which contains additional information about physical devices. In particular we need to get the physical device handle so we can use an alternate i/o path for fast physical devices like SSDs so we can speed up certain i/o's by bypassing the RAID stack code in the controller firmware. Signed-off-by: NMatt Gates <matthew.gates@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 20 12月, 2013 2 次提交
-
-
由 Stephen M. Cameron 提交于
This used to be the default, but at some point the firmware guys changed the default and I failed to notice. Now to get unit attention notifications, you must twiddle a bit indicating you want them. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
The field contains more bits than just the one to indicate whether scsi prefetch should be turned on. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 10 5月, 2012 3 次提交
-
-
由 Stephen M. Cameron 提交于
Dial back the aggressiveness of the controller lockup detection thread. Currently it will declare the controller to be locked up if it goes for 10 seconds with no interrupts and no change in the heartbeat register. Dial back this to 30 seconds with no heartbeat change, and also snoop the ioctl path and if a firmware flash command is detected, dial it back further to 4 minutes until the firmware flash command completes. The reason for this is that during the firmware flash operation, the controller apparently doesn't update the heartbeat register as frequently as it is supposed to, and we can get a false positive. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Matt Gates 提交于
Smart Arrays can support multiple reply queues onto which command completions may be deposited. It can help performance quite a bit to arrange for command completions to be processed on the same CPU from which they were submitted to increase the likelihood of cache hits. Signed-off-by: NMatt Gates <matthew.gates@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 19 2月, 2012 2 次提交
-
-
由 Scott Teel 提交于
Driver limits SAS external target IDs to range 1-8. Need to increase limit and clean up overlapping concepts of targets and paths in the code. There are several defined constants that control this: HPSA_MAX_TARGETS_PER_CTLR 16 MAX_MSA2XXX_ENCLOSURES 32 HPSA_MAX_PATHS 8 We can condense this to one constant: MAX_EXT_TARGETS 32 SAS switches allow for 8 connections, and there is capacity for 4 switches per enclosure in largest blade enclosure type. Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
由 Stephen M. Cameron 提交于
[SCSI] hpsa: removed unneeded structure member max_sg_entries and fix badly named constant MAXSGENTRIES We had both h->max_sg_entries and h->maxsgentries in the per controller structure which is terribly confusing. max_sg_entries was really just a constant, 32, which defines how big the "block fetch table" is, which is as large as the max number of SG elements embedded within a command (excluding SG elements in chain blocks). MAXSGENTRIES was the constant used to denote the max number of SG elements embedded within a command, also a poor name. So renamed MAXSGENTREIS to SG_ENTRIES_IN_CMD, and removed h->max_sg_entries and replaced it with SG_ENTRIES_IN_CMD. h->maxsgentries is unchanged, and is the maximum number of sg elements the controller will support in a command, including those in chain blocks, minus 1 for the chain block pointer.. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 30 10月, 2011 1 次提交
-
-
由 Scott Teel 提交于
The currentsd[] array in hpsa_update_scsi_devices had room for 256 devices. The code was iterating over however many physical and logical devices plus an additional number of possible external MSA2XXX controllers, which together could potentially exceed 256. We increased the size of the currentsd array to 1024 + 1024 + 32 + 1 elements to reflect a reasonable maximum possible number of devices which might be encountered. We also don't just walk off the end of the array if the array controller reports more devices than we are prepared to handle, we just ignore the excessive devices. Signed-off-by: NScott Teel <scott.teel@hp.com> Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
-
- 17 5月, 2011 2 次提交
-
-
由 Stephen M. Cameron 提交于
The bit-2-doorbell reset method seemed to cause (survivable) NMIs on some systems and (unsurvivable) IOCK NMIs on some G7 servers. Firmware guys implemented a new doorbell method to alleviate these problems triggered by bit 5 of the doorbell register. We want to use it if it's available. Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <jbottomley@parallels.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-
由 Stephen M. Cameron 提交于
Detect failure of controller reset by noticing if the 32 bytes of "driver version" we store on the hardware in the config table fail to get zeroed out. Previously we noticed if the controller did not transition to "simple mode", but this did not detect reset failure if the controller was already in simple mode prior to the reset attempt (e.g. due to module parameter hpsa_simple_mode=1). Signed-off-by: NStephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: NJames Bottomley <jbottomley@parallels.com> Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
-