|
@@ -462,23 +462,18 @@ static void sbp2util_notify_fetch_agent(struct scsi_id_instance_data *scsi_id,
|
|
|
|
|
|
static void sbp2util_write_orb_pointer(struct work_struct *work)
|
|
|
{
|
|
|
- struct scsi_id_instance_data *scsi_id =
|
|
|
- container_of(work, struct scsi_id_instance_data,
|
|
|
- protocol_work.work);
|
|
|
quadlet_t data[2];
|
|
|
|
|
|
- data[0] = ORB_SET_NODE_ID(scsi_id->hi->host->node_id);
|
|
|
- data[1] = scsi_id->last_orb_dma;
|
|
|
+ data[0] = ORB_SET_NODE_ID(
|
|
|
+ (container_of(work, struct scsi_id_instance_data, protocol_work))->hi->host->node_id);
|
|
|
+ data[1] = (container_of(work, struct scsi_id_instance_data, protocol_work))->last_orb_dma;
|
|
|
sbp2util_cpu_to_be32_buffer(data, 8);
|
|
|
- sbp2util_notify_fetch_agent(scsi_id, SBP2_ORB_POINTER_OFFSET, data, 8);
|
|
|
+ sbp2util_notify_fetch_agent(container_of(work, struct scsi_id_instance_data, protocol_work), SBP2_ORB_POINTER_OFFSET, data, 8);
|
|
|
}
|
|
|
|
|
|
static void sbp2util_write_doorbell(struct work_struct *work)
|
|
|
{
|
|
|
- struct scsi_id_instance_data *scsi_id =
|
|
|
- container_of(work, struct scsi_id_instance_data,
|
|
|
- protocol_work.work);
|
|
|
- sbp2util_notify_fetch_agent(scsi_id, SBP2_DOORBELL_OFFSET, NULL, 4);
|
|
|
+ sbp2util_notify_fetch_agent(container_of(work, struct scsi_id_instance_data, protocol_work), SBP2_DOORBELL_OFFSET, NULL, 4);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -795,7 +790,7 @@ static struct scsi_id_instance_data *sbp2_alloc_device(struct unit_directory *ud
|
|
|
INIT_LIST_HEAD(&scsi_id->scsi_list);
|
|
|
spin_lock_init(&scsi_id->sbp2_command_orb_lock);
|
|
|
atomic_set(&scsi_id->state, SBP2LU_STATE_RUNNING);
|
|
|
- INIT_DELAYED_WORK(&scsi_id->protocol_work, NULL);
|
|
|
+ INIT_WORK(&scsi_id->protocol_work, NULL);
|
|
|
|
|
|
ud->device.driver_data = scsi_id;
|
|
|
|
|
@@ -1578,7 +1573,7 @@ static int sbp2_agent_reset(struct scsi_id_instance_data *scsi_id, int wait)
|
|
|
int retval;
|
|
|
unsigned long flags;
|
|
|
|
|
|
- cancel_delayed_work(&scsi_id->protocol_work);
|
|
|
+ /* cancel_delayed_work(&scsi_id->protocol_work); */
|
|
|
if (wait)
|
|
|
flush_scheduled_work();
|
|
|
|
|
@@ -1889,10 +1884,11 @@ static void sbp2_link_orb_command(struct scsi_id_instance_data *scsi_id,
|
|
|
* We do not accept new commands until the job is over.
|
|
|
*/
|
|
|
scsi_block_requests(scsi_id->scsi_host);
|
|
|
- PREPARE_DELAYED_WORK(&scsi_id->protocol_work,
|
|
|
+ PREPARE_WORK(&scsi_id->protocol_work,
|
|
|
last_orb ? sbp2util_write_doorbell:
|
|
|
- sbp2util_write_orb_pointer);
|
|
|
- schedule_delayed_work(&scsi_id->protocol_work, 0);
|
|
|
+ sbp2util_write_orb_pointer
|
|
|
+ /* */);
|
|
|
+ schedule_work(&scsi_id->protocol_work);
|
|
|
}
|
|
|
}
|
|
|
|