On Wed, Feb 17, 2010 at 11:29 PM, Joe Eykholt <[email protected]> wrote:

> Vladislav Bolkhovitin wrote:
> > Joe Eykholt, on 02/13/2010 01:30 AM wrote:
>
> >> fcst keeps track of read/write progress in its own ft_cmd struct for
> now.
> >> Is there a standard way of doing that via scst_cmd?  If not, that'd be
> >> nice.
> >
> > I'm not sure what you mean. Basically, a target driver doesn't need to
> > keep track of progress of any commands, it simply should on each event
> > from SCST or hardware call the next function to switch to the next state
> > of the processing state machine. On each state there is only one such
> > function.
> >
> > The only area where there's a need to know commands processing states is
> > errors recovery, when you inside driver need to figure out how to abort
> > a command. For instance, it might be needed in
> > on_hw_pending_cmd_timeout() callback.
>
> What I meant here, is when I'm receiving data or sending data, I need
> a way of keeping track of how much has been received or sent, so I know
> when its done, and whether any has been missed.  I can require that
> it be received in sequence, and will always send sequentially, of course.
>
> It seems like other target drivers would need that, too.  Is there
> a common way to do that?
>

As far as I know the block layer in the Linux kernel uses a radix tree to
solve a similar issue: to keep track of which data has already been read and
which not. See also:
* http://lwn.net/Articles/175432/
*
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=include/linux;hb=HEAD
*
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=mm/readahead.c;hb=HEAD

Bart.
_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to