[stgt] [BUG] Tgt-1.0.8 exited unexpectedly
Hirokazu Takahashi
taka at valinux.co.jp
Tue Oct 19 03:41:20 CEST 2010
Hi,
> > Tgt-1.0.8 sometimes exited unexpectedly with an error in function
> > iscsi_tx_handler leaving a message "tgtd: iscsi_tx_handler(2215)
> > error 0 0." To figure out what happened, I tried running tgt-1.0.8
>
> I found one bug related with tmf. There might be more but can you try
> the following patch against the latest git (not against the ptread
> branch).
>
> Please report the result with a log like tgtd-Sep18th.log. The patch
> gives more debug messages so I might get more ideas about the
> problems.
>
> Thanks!
Okay, I will try it.
Wait for the result.
Thanks,
Hirokazu Takahashi.
>
> diff --git a/usr/iscsi/conn.c b/usr/iscsi/conn.c
> index ba7a58f..900ea80 100644
> --- a/usr/iscsi/conn.c
> +++ b/usr/iscsi/conn.c
> @@ -103,7 +103,8 @@ void conn_close(struct iscsi_connection *conn)
> if (!conn->session)
> goto done;
>
> - eprintf("sesson %p %d\n", conn->session, conn->session->refcount);
> + eprintf("sesson %p %d, %p\n", conn->session, conn->session->refcount,
> + conn);
>
> /*
> * We just closed the ep so we are not going to send/recv anything.
> diff --git a/usr/iscsi/iscsid.c b/usr/iscsi/iscsid.c
> index 3a79d93..404c5e8 100644
> --- a/usr/iscsi/iscsid.c
> +++ b/usr/iscsi/iscsid.c
> @@ -1346,6 +1346,12 @@ static int iscsi_tm_done(struct mgmt_req *mreq)
>
> task = (struct iscsi_task *) (unsigned long) mreq->mid;
>
> + if (task->conn->state == STATE_CLOSE) {
> + list_del(&task->c_hlist);
> + iscsi_free_task(task);
> + return 0;
> + }
> +
> switch (mreq->result) {
> case 0:
> task->result = ISCSI_TMF_RSP_COMPLETE;
> @@ -1407,6 +1413,7 @@ static int iscsi_tm_execute(struct iscsi_task *task)
> task->result = err;
> else {
> int ret;
> + eprintf("%p %x\n", conn, fn);
> ret = target_mgmt_request(conn->session->target->tid,
> conn->session->tsih,
> (unsigned long)task, fn, req->lun,
> diff --git a/usr/target.c b/usr/target.c
> index 79798ad..368557b 100644
> --- a/usr/target.c
> +++ b/usr/target.c
> @@ -1081,6 +1081,10 @@ void target_cmd_done(struct scsi_cmd *cmd)
> struct mgmt_req *mreq;
>
> mreq = cmd->mreq;
> + if (mreq)
> + eprintf("%p %d %" PRIx64 " %lx\n", mreq, mreq->busy,
> + cmd->tag, cmd->state);
> +
> if (mreq && !--mreq->busy) {
> mreq->result = mreq->function == ABORT_TASK ? -EEXIST : 0;
> mreq->itn_id = cmd->cmd_itn_id;
> @@ -1096,7 +1100,7 @@ static int abort_cmd(struct target* target, struct mgmt_req *mreq,
> {
> int err = 0;
>
> - eprintf("found %" PRIx64 " %lx\n", cmd->tag, cmd->state);
> + eprintf("found %p %" PRIx64 " %lx\n", mreq, cmd->tag, cmd->state);
>
> if (cmd_processed(cmd)) {
> /*
>
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list