diff --git a/iscsi-scst/kernel/iscsi.c b/iscsi-scst/kernel/iscsi.c index 5d5a66a8c..898d5ae7b 100644 --- a/iscsi-scst/kernel/iscsi.c +++ b/iscsi-scst/kernel/iscsi.c @@ -2362,10 +2362,18 @@ struct iscsi_cmnd_abort_params { static mempool_t *iscsi_cmnd_abort_mempool; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20) +static void iscsi_cmnd_abort_fn(void *ctx) +#else static void iscsi_cmnd_abort_fn(struct work_struct *work) +#endif { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20) + struct iscsi_cmnd_abort_params *params = ctx; +#else struct iscsi_cmnd_abort_params *params = container_of(work, struct iscsi_cmnd_abort_params, iscsi_cmnd_abort_work); +#endif struct scst_cmd *scst_cmd = params->scst_cmd; struct iscsi_session *session = scst_sess_get_tgt_priv(scst_cmd->sess); struct iscsi_conn *conn; @@ -2424,7 +2432,11 @@ static void iscsi_on_abort_cmd(struct scst_cmd *scst_cmd) } memset(params, 0, sizeof(*params)); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20) + INIT_WORK(¶ms->iscsi_cmnd_abort_work, iscsi_cmnd_abort_fn, params); +#else INIT_WORK(¶ms->iscsi_cmnd_abort_work, iscsi_cmnd_abort_fn); +#endif params->scst_cmd = scst_cmd; scst_cmd_get(scst_cmd);