Commit 2a09ed3d authored by K. Y. Srinivasan's avatar K. Y. Srinivasan Committed by Christoph Hellwig

storvsc: in responce to a scan event, scan the host

The virtual HBA that storvsc implements can support multiple channels and
targets. So, scan the host when the host notifies that a scan is needed.
Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: default avatarLong Li <longli@microsoft.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent ead3700d
...@@ -410,21 +410,16 @@ static void storvsc_device_scan(struct work_struct *work) ...@@ -410,21 +410,16 @@ static void storvsc_device_scan(struct work_struct *work)
kfree(wrk); kfree(wrk);
} }
static void storvsc_bus_scan(struct work_struct *work) static void storvsc_host_scan(struct work_struct *work)
{ {
struct storvsc_scan_work *wrk; struct storvsc_scan_work *wrk;
int id, order_id; struct Scsi_Host *host;
wrk = container_of(work, struct storvsc_scan_work, work); wrk = container_of(work, struct storvsc_scan_work, work);
for (id = 0; id < wrk->host->max_id; ++id) { host = wrk->host;
if (wrk->host->reverse_ordering)
order_id = wrk->host->max_id - id - 1; scsi_scan_host(host);
else
order_id = id;
scsi_scan_target(&wrk->host->shost_gendev, 0,
order_id, SCAN_WILD_CARD, 1);
}
kfree(wrk); kfree(wrk);
} }
...@@ -1173,7 +1168,7 @@ static void storvsc_on_receive(struct hv_device *device, ...@@ -1173,7 +1168,7 @@ static void storvsc_on_receive(struct hv_device *device,
if (!work) if (!work)
return; return;
INIT_WORK(&work->work, storvsc_bus_scan); INIT_WORK(&work->work, storvsc_host_scan);
work->host = stor_device->host; work->host = stor_device->host;
schedule_work(&work->work); schedule_work(&work->work);
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment