Re: tgtd segfault with software RAID, hard resetting link

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 20 Apr 2009 12:04:41 +0100
Chris Webb <chris@xxxxxxxxxxxx> wrote:

> FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> writes:
> 
> > I've not tried to reproduce this problem yet, but can you please try
> > this patch?
> 
> Hi. Thanks for that: I'll give it a whirl on a test machine as soon as
> possible and let you know how it behaves. (My previous test machine is now
> in production, so I can't use that---need to put together a new one!)

I see.

Tomasz, any chance to test the patch?


> I'm betraying my lack of familiarity with the tgt code-base here, but there
> are two things I don't quite follow about your patch:
> 
>   - If you skip a task because it is 'in scsi', when does it get finally get
>     cleared up?

Yeah, it should.

- If iscsi_task are waiting for the I/O completion and the conn is
closed, iscsi_scsi_cmd_done() frees iscsi_task when the I/Os complete
(you and Tomasz hit this case, I think).

- iscsi_alloc_task calls conn_get(). It means that we don't free the
conn until all iscsi_task belonging to the conn are freed.
(

> (Does the list_for_each_entry_safe keep retrying until the
>     list is empty?)

It doesn't.


>   - You set the TASK_in_scsi flags bit, but I don't see it getting cleared
>     anywhere. (Does the whole flags word get reset at the end of the SCSI
>     command or something like that?)

It doesn't get cleared. When the I/Os complete, we call
iscsi_scsi_cmd_done(), which links tasks to conn->tx_clist. So
conn_close() can handle such tasks properly.

task->flags is confusing. We don't need to use the bitmap for it. What
we should do here is using something like:

enum iscsi_task {
     TASK_INIT,
     TASK_PENDING,
     TASK_IN_SCSI,

--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux SCSI]     [Linux RAID]     [Linux Clusters]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]

  Powered by Linux