|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: iSCSI: Why is ACA optional?
Ralph,
That is an interesting argument.
However, now that disks have become more complex and can queue tasks how
would you
handle having one task rejected because the queue was full and the next
(still in flight) accepted because
some slot became available?
And this might even happen inside the host (possibly a large SMP) that with
SMP would not have to care coordinating tasks but without ACA will have to
strictly serialize access.
IMHO TODAY not mandating ACA is a mistake (IBM 360 disk controllers had it
30 years ago for the very reason I quoted).
I any case iSCSI can do little to ease the pain - except to point out to
those that plan using disk subsystems without ACA to rely on status
numbering and issue commands one by one.
Regards,
Julo
Regards,
Julo
Ralph Weber <ralphoweber@compuserve.com> on 27/11/2000 21:29:46
Please respond to ENDL_TX@computer.org
To: ips@ece.cmu.edu
cc:
Subject: iSCSI: Why is ACA optional?
About two weeks ago, Julian asked:
"I don't see why does T10 not mandate ACA for all (new) devices."
I've been a little busy and apologize for not answering sooner.
The short answer is:
Because disks don't need ACA.
T10 is a pretty disk-centric and the fact that disks can operate
just fine without ACA is sufficient reason not to mandate it.
Elaboration and explanation of the short answer follow.
In the typical disk I/O case (reads and writes) the results of
one command have no effect on another command. So as long as
autosense returns the sense data with the CHECK CONDITION status,
there is no need for an error on one command to affect the
processing of other commands.
Here is an example. Suppose a program is reading 10 blocks
and has issued 10 concurrent reads to do the job. If one of
the reads fails, the other reads are still good and the problem
can be corrected by retrying the one failed read. An almost
identical case can be made for writes.
Suppose that two unrelated programs are reading their separate
MSword documents from the same disk. If one of the reads fails
there is no reason to stall or fail the reads for the other
MSword incarnation, just as there would be no reason to fail
any other reads.
The exceptions to this 98% of the cases fall into two categories:
o Issues that can be (and long have been) punted up to the
application
o Very rare cases
In the punt category, the most obvious case is: "What about
when one application writes a block and another reads it?"
The punt here is a long standing rule that if a read is
sent concurrent with a pending write for the same block,
the disk is free to satisfy the read with either the
before-write or after-write data.
If the writes and reads are for multiple blocks, the disk
is further allowed to put some before-write and some after-
write blocks in the read buffer. Punt: applications that
care about concurrent write and read operations had better
manage the coordination themselves.
It should also be noted that many disk error cases will
naturally result in the same errors being reported to
both writes and reads. One way or another, ACA is not
required by disks for read/write error handling.
In the rare category, there's the question of "What happens
is the media is removed?" This is a non issue because
most disks are fixed media and if you remove the disk
you also remove the target, which in iSCSI terms means
you have to login again. If you're building a removable
media disk (the less than 2% case), then you can implement
the optional ACA or devise some other protection.
These are the reasons T10 has not mandated ACA and it not
likely to anytime soon.
Thanks.
Ralph Weber
Home Last updated: Tue Sep 04 01:06:15 2001 6315 messages in chronological order |