|
|
@@ -478,19 +478,18 @@ struct hv_host_device {
|
|
|
struct storvsc_scan_work {
|
|
|
struct work_struct work;
|
|
|
struct Scsi_Host *host;
|
|
|
- uint lun;
|
|
|
+ u8 lun;
|
|
|
+ u8 tgt_id;
|
|
|
};
|
|
|
|
|
|
static void storvsc_device_scan(struct work_struct *work)
|
|
|
{
|
|
|
struct storvsc_scan_work *wrk;
|
|
|
- uint lun;
|
|
|
struct scsi_device *sdev;
|
|
|
|
|
|
wrk = container_of(work, struct storvsc_scan_work, work);
|
|
|
- lun = wrk->lun;
|
|
|
|
|
|
- sdev = scsi_device_lookup(wrk->host, 0, 0, lun);
|
|
|
+ sdev = scsi_device_lookup(wrk->host, 0, wrk->tgt_id, wrk->lun);
|
|
|
if (!sdev)
|
|
|
goto done;
|
|
|
scsi_rescan_device(&sdev->sdev_gendev);
|
|
|
@@ -541,7 +540,7 @@ static void storvsc_remove_lun(struct work_struct *work)
|
|
|
if (!scsi_host_get(wrk->host))
|
|
|
goto done;
|
|
|
|
|
|
- sdev = scsi_device_lookup(wrk->host, 0, 0, wrk->lun);
|
|
|
+ sdev = scsi_device_lookup(wrk->host, 0, wrk->tgt_id, wrk->lun);
|
|
|
|
|
|
if (sdev) {
|
|
|
scsi_remove_device(sdev);
|
|
|
@@ -941,6 +940,7 @@ static void storvsc_handle_error(struct vmscsi_request *vm_srb,
|
|
|
|
|
|
wrk->host = host;
|
|
|
wrk->lun = vm_srb->lun;
|
|
|
+ wrk->tgt_id = vm_srb->target_id;
|
|
|
INIT_WORK(&wrk->work, process_err_fn);
|
|
|
schedule_work(&wrk->work);
|
|
|
}
|