Skip to content

Commit

Permalink
Staging: hv: storvsc: Support hot add of scsi disks
Browse files Browse the repository at this point in the history
Support hot add of scsi disks.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed Nov 27, 2011
1 parent 2b9525f commit 1267579
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions drivers/staging/hv/storvsc_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,30 @@ struct storvsc_cmd_request {
struct hv_storvsc_request request;
};

struct storvsc_scan_work {
struct work_struct work;
struct Scsi_Host *host;
uint lun;
};

static void storvsc_bus_scan(struct work_struct *work)
{
struct storvsc_scan_work *wrk;
int id, order_id;

wrk = container_of(work, struct storvsc_scan_work, work);
for (id = 0; id < wrk->host->max_id; ++id) {
if (wrk->host->reverse_ordering)
order_id = wrk->host->max_id - id - 1;
else
order_id = id;

scsi_scan_target(&wrk->host->shost_gendev, 0,
order_id, SCAN_WILD_CARD, 1);
}
kfree(wrk);
}

static inline struct storvsc_device *get_out_stor_device(
struct hv_device *device)
{
Expand Down Expand Up @@ -551,11 +575,25 @@ static void storvsc_on_receive(struct hv_device *device,
struct vstor_packet *vstor_packet,
struct hv_storvsc_request *request)
{
struct storvsc_scan_work *work;
struct storvsc_device *stor_device;

switch (vstor_packet->operation) {
case VSTOR_OPERATION_COMPLETE_IO:
storvsc_on_io_completion(device, vstor_packet, request);
break;

case VSTOR_OPERATION_REMOVE_DEVICE:
case VSTOR_OPERATION_ENUMERATE_BUS:
stor_device = get_in_stor_device(device);
work = kmalloc(sizeof(struct storvsc_scan_work), GFP_ATOMIC);
if (!work)
return;

INIT_WORK(&work->work, storvsc_bus_scan);
work->host = stor_device->host;
schedule_work(&work->work);
break;

default:
break;
Expand Down

0 comments on commit 1267579

Please sign in to comment.