diff options
| -rw-r--r-- | drivers/scsi/virtio_scsi.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c index 89ee5929eb6d..bcad917fd89a 100644 --- a/drivers/scsi/virtio_scsi.c +++ b/drivers/scsi/virtio_scsi.c | |||
| @@ -253,6 +253,8 @@ static void virtscsi_ctrl_done(struct virtqueue *vq) | |||
| 253 | virtscsi_vq_done(vscsi, &vscsi->ctrl_vq, virtscsi_complete_free); | 253 | virtscsi_vq_done(vscsi, &vscsi->ctrl_vq, virtscsi_complete_free); |
| 254 | }; | 254 | }; |
| 255 | 255 | ||
| 256 | static void virtscsi_handle_event(struct work_struct *work); | ||
| 257 | |||
| 256 | static int virtscsi_kick_event(struct virtio_scsi *vscsi, | 258 | static int virtscsi_kick_event(struct virtio_scsi *vscsi, |
| 257 | struct virtio_scsi_event_node *event_node) | 259 | struct virtio_scsi_event_node *event_node) |
| 258 | { | 260 | { |
| @@ -260,6 +262,7 @@ static int virtscsi_kick_event(struct virtio_scsi *vscsi, | |||
| 260 | struct scatterlist sg; | 262 | struct scatterlist sg; |
| 261 | unsigned long flags; | 263 | unsigned long flags; |
| 262 | 264 | ||
| 265 | INIT_WORK(&event_node->work, virtscsi_handle_event); | ||
| 263 | sg_init_one(&sg, &event_node->event, sizeof(struct virtio_scsi_event)); | 266 | sg_init_one(&sg, &event_node->event, sizeof(struct virtio_scsi_event)); |
| 264 | 267 | ||
| 265 | spin_lock_irqsave(&vscsi->event_vq.vq_lock, flags); | 268 | spin_lock_irqsave(&vscsi->event_vq.vq_lock, flags); |
| @@ -377,7 +380,6 @@ static void virtscsi_complete_event(struct virtio_scsi *vscsi, void *buf) | |||
| 377 | { | 380 | { |
| 378 | struct virtio_scsi_event_node *event_node = buf; | 381 | struct virtio_scsi_event_node *event_node = buf; |
| 379 | 382 | ||
| 380 | INIT_WORK(&event_node->work, virtscsi_handle_event); | ||
| 381 | schedule_work(&event_node->work); | 383 | schedule_work(&event_node->work); |
| 382 | } | 384 | } |
| 383 | 385 | ||
