--------------------------------------
Eric Anderson ewa@apple.com
Apple Computer, Inc. 408-974-8187
--------------------------------------
Greg wrote:
> This is true if the tasks being processed by the target are
> idempotent. (In other words, that they may be executed one or
> more times and end up with exactly the same result.) This
> feature is needed to support the following situation:
>
> - a task to be partially processed
> - a Bus Reset to occur (which implicitly aborts the task)
> - the task requeued on the list
> - the task completely restarted
>
> I think this is an inheirent attribute of mass storage commands.
> Unfortunately, printers are not.
>
> Sending a set of commands which are larger than the printer can
> buffer forces the printer to process some commands before they
> are all received. If a Bus Reset occurs, then either the printer
> must validate that the same ORB was requeued and try to resume
> from the last valid offset fetched, OR the protocol can guarantee
> that the ORB's data block has been completely transferred before
> the data is processed. The first case is difficult at best, the
> second is easy and provides idempotency at the cost of
> negotiating the maximum sizes of the data blocks referenced by
> the ORBs.
>
> So, it's easier for the initiator to be aware of the transport
> packet sizes supportable by the target than it is to work around
> the Bus Reset problem by another mechanism. If you have a better
> suggestion, I'll certainly consider it.
>
> "Need" is relative to the context. In this thread, we're talking
> about using SBP-2 for printing services.