aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ipr.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-17 20:54:40 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-17 20:54:40 -0400
commitc55d267de274d308927b60c3e740c1a826832317 (patch)
tree21b53a8c725d9f9650f60d94b349459d5b8dae10 /drivers/scsi/ipr.c
parent61ef46fd45c3c62dc7c880a45dd2aa841b9af8fb (diff)
parentbc898c97f7ba24def788d9f80786cf028a197122 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (170 commits) [SCSI] scsi_dh_rdac: Add MD36xxf into device list [SCSI] scsi_debug: add consecutive medium errors [SCSI] libsas: fix ata list corruption issue [SCSI] hpsa: export resettable host attribute [SCSI] hpsa: move device attributes to avoid forward declarations [SCSI] scsi_debug: Logical Block Provisioning (SBC3r26) [SCSI] sd: Logical Block Provisioning update [SCSI] Include protection operation in SCSI command trace [SCSI] hpsa: fix incorrect PCI IDs and add two new ones (2nd try) [SCSI] target: Fix volume size misreporting for volumes > 2TB [SCSI] bnx2fc: Broadcom FCoE offload driver [SCSI] fcoe: fix broken fcoe interface reset [SCSI] fcoe: precedence bug in fcoe_filter_frames() [SCSI] libfcoe: Remove stale fcoe-netdev entries [SCSI] libfcoe: Move FCOE_MTU definition from fcoe.h to libfcoe.h [SCSI] libfc: introduce __fc_fill_fc_hdr that accepts fc_hdr as an argument [SCSI] fcoe, libfc: initialize EM anchors list and then update npiv EMs [SCSI] Revert "[SCSI] libfc: fix exchange being deleted when the abort itself is timed out" [SCSI] libfc: Fixing a memory leak when destroying an interface [SCSI] megaraid_sas: Version and Changelog update ... Fix up trivial conflicts due to whitespace differences in drivers/scsi/libsas/{sas_ata.c,sas_scsi_host.c}
Diffstat (limited to 'drivers/scsi/ipr.c')
-rw-r--r--drivers/scsi/ipr.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index d841e98a8bd5..0621238fac4a 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -1301,7 +1301,7 @@ static void ipr_handle_config_change(struct ipr_ioa_cfg *ioa_cfg,
1301 ipr_clear_res_target(res); 1301 ipr_clear_res_target(res);
1302 list_move_tail(&res->queue, &ioa_cfg->free_res_q); 1302 list_move_tail(&res->queue, &ioa_cfg->free_res_q);
1303 } 1303 }
1304 } else if (!res->sdev) { 1304 } else if (!res->sdev || res->del_from_ml) {
1305 res->add_to_ml = 1; 1305 res->add_to_ml = 1;
1306 if (ioa_cfg->allow_ml_add_del) 1306 if (ioa_cfg->allow_ml_add_del)
1307 schedule_work(&ioa_cfg->work_q); 1307 schedule_work(&ioa_cfg->work_q);
@@ -3104,7 +3104,10 @@ restart:
3104 did_work = 1; 3104 did_work = 1;
3105 sdev = res->sdev; 3105 sdev = res->sdev;
3106 if (!scsi_device_get(sdev)) { 3106 if (!scsi_device_get(sdev)) {
3107 list_move_tail(&res->queue, &ioa_cfg->free_res_q); 3107 if (!res->add_to_ml)
3108 list_move_tail(&res->queue, &ioa_cfg->free_res_q);
3109 else
3110 res->del_from_ml = 0;
3108 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); 3111 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
3109 scsi_remove_device(sdev); 3112 scsi_remove_device(sdev);
3110 scsi_device_put(sdev); 3113 scsi_device_put(sdev);
@@ -8864,7 +8867,7 @@ static void __ipr_remove(struct pci_dev *pdev)
8864 8867
8865 spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags); 8868 spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
8866 wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload); 8869 wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
8867 flush_scheduled_work(); 8870 flush_work_sync(&ioa_cfg->work_q);
8868 spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags); 8871 spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
8869 8872
8870 spin_lock(&ipr_driver_lock); 8873 spin_lock(&ipr_driver_lock);