linux-next: manual merge of the vhost tree with the target-updatestree

From: Stephen Rothwell
Date: Mon Jul 08 2013 - 02:04:44 EST


Hi Michael,

Today's linux-next merge of the vhost tree got a conflict in
drivers/vhost/scsi.c between commit 084ed45b3846 ("vhost/scsi: Convert to
se_cmd->cmd_kref TARGET_SCF_ACK_KREF usage") from the target-updates tree
and commit 3c63f66a0dcd ("vhost-scsi: Rename struct tcm_vhost_cmd *tv_cmd
to *cmd") from the vhost tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

diff --cc drivers/vhost/scsi.c
index b351938,4264840..0000000
--- a/drivers/vhost/scsi.c
+++ b/drivers/vhost/scsi.c
@@@ -446,19 -448,7 +448,19 @@@ static u32 tcm_vhost_tpg_get_inst_index

static void tcm_vhost_release_cmd(struct se_cmd *se_cmd)
{
- struct tcm_vhost_cmd *tv_cmd = container_of(se_cmd,
- return;
++ struct tcm_vhost_cmd *cmd = container_of(se_cmd,
+ struct tcm_vhost_cmd, tvc_se_cmd);
+
- if (tv_cmd->tvc_sgl_count) {
++ if (cmd->tvc_sgl_count) {
+ u32 i;
- for (i = 0; i < tv_cmd->tvc_sgl_count; i++)
- put_page(sg_page(&tv_cmd->tvc_sgl[i]));
++ for (i = 0; i < cmd->tvc_sgl_count; i++)
++ put_page(sg_page(&cmd->tvc_sgl[i]));
+
- kfree(tv_cmd->tvc_sgl);
++ kfree(cmd->tvc_sgl);
+ }
+
- tcm_vhost_put_inflight(tv_cmd->inflight);
- kfree(tv_cmd);
++ tcm_vhost_put_inflight(cmd->inflight);
++ kfree(cmd);
}

static int tcm_vhost_shutdown_session(struct se_session *se_sess)
@@@ -564,22 -555,28 +567,22 @@@ tcm_vhost_allocate_evt(struct vhost_scs
return evt;
}

- static void vhost_scsi_free_cmd(struct tcm_vhost_cmd *tv_cmd)
+ static void vhost_scsi_free_cmd(struct tcm_vhost_cmd *cmd)
{
- struct se_cmd *se_cmd = &tv_cmd->tvc_se_cmd;
+ struct se_cmd *se_cmd = &cmd->tvc_se_cmd;

/* TODO locking against target/backend threads? */
- transport_generic_free_cmd(se_cmd, 1);
+ transport_generic_free_cmd(se_cmd, 0);

- if (cmd->tvc_sgl_count) {
- u32 i;
- for (i = 0; i < cmd->tvc_sgl_count; i++)
- put_page(sg_page(&cmd->tvc_sgl[i]));
-
- kfree(cmd->tvc_sgl);
- }
-
- tcm_vhost_put_inflight(cmd->inflight);
+}

- kfree(cmd);
+static int vhost_scsi_check_stop_free(struct se_cmd *se_cmd)
+{
+ return target_put_sess_cmd(se_cmd->se_sess, se_cmd);
}

- static void tcm_vhost_do_evt_work(struct vhost_scsi *vs,
- struct tcm_vhost_evt *evt)
+ static void
+ tcm_vhost_do_evt_work(struct vhost_scsi *vs, struct tcm_vhost_evt *evt)
{
struct vhost_virtqueue *vq = &vs->vqs[VHOST_SCSI_VQ_EVT].vq;
struct virtio_scsi_event *event = &evt->event;
@@@ -847,13 -850,13 +856,13 @@@ static void tcm_vhost_submission_work(s
} else {
sg_ptr = NULL;
}
- tv_nexus = tv_cmd->tvc_nexus;
+ tv_nexus = cmd->tvc_nexus;

rc = target_submit_cmd_map_sgls(se_cmd, tv_nexus->tvn_se_sess,
- tv_cmd->tvc_cdb, &tv_cmd->tvc_sense_buf[0],
- tv_cmd->tvc_lun, tv_cmd->tvc_exp_data_len,
- tv_cmd->tvc_task_attr, tv_cmd->tvc_data_direction,
- TARGET_SCF_ACK_KREF, sg_ptr, tv_cmd->tvc_sgl_count,
+ cmd->tvc_cdb, &cmd->tvc_sense_buf[0],
+ cmd->tvc_lun, cmd->tvc_exp_data_len,
+ cmd->tvc_task_attr, cmd->tvc_data_direction,
- 0, sg_ptr, cmd->tvc_sgl_count,
++ TARGET_SCF_ACK_KREF, sg_ptr, cmd->tvc_sgl_count,
sg_bidi_ptr, sg_no_bidi);
if (rc < 0) {
transport_send_check_condition_and_sense(se_cmd,

Attachment: pgp00000.pgp
Description: PGP signature