hpsa: remove incorrect BUG_ONs checking for raid offload enable
authorStephen Cameron <stephenmcameron@gmail.com>
Fri, 23 Jan 2015 22:44:01 +0000 (16:44 -0600)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 2 Feb 2015 17:57:42 +0000 (09:57 -0800)
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>
drivers/scsi/hpsa.c

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