hpsa: remove incorrect BUG_ONs checking for raid offload enable

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: Scott Teel <scott.teel@pmcs.com>
Signed-off-by: Don Brace <don.brace@pmcs.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Stephen Cameron 2015-01-23 16:44:01 -06:00 committed by James Bottomley
parent c2b0acde06
commit 6f99a9160f
1 changed files with 0 additions and 4 deletions

View File

@ -3456,8 +3456,6 @@ static void set_encrypt_ioaccel2(struct ctlr_info *h,
struct raid_map_data *map = &dev->raid_map; struct raid_map_data *map = &dev->raid_map;
u64 first_block; u64 first_block;
BUG_ON(!(dev->offload_config && dev->offload_enabled));
/* Are we doing encryption on this device */ /* Are we doing encryption on this device */
if (!(le16_to_cpu(map->flags) & RAID_MAP_FLAG_ENCRYPT_ON)) if (!(le16_to_cpu(map->flags) & RAID_MAP_FLAG_ENCRYPT_ON))
return; return;
@ -3688,8 +3686,6 @@ static int hpsa_scsi_ioaccel_raid_map(struct ctlr_info *h,
#endif #endif
int offload_to_mirror; int offload_to_mirror;
BUG_ON(!(dev->offload_config && dev->offload_enabled));
/* check for valid opcode, get LBA and block count */ /* check for valid opcode, get LBA and block count */
switch (cmd->cmnd[0]) { switch (cmd->cmnd[0]) {
case WRITE_6: case WRITE_6: