> what have I really gained?
… is an echo of my question: “what is the real problem that has
been solved (by making creates truly async and cancelable)?”
I still think - well, above and beyond an idealistic answer “let’s
make this OS async 100%, not 99%” - that it may be related to timing.
If you can bet that creates are “fast” (what is “fast”?), you can just
sit and wait for [already cancelled] create to complete - a couple of
microseconds are wasted once in a while, but who cares?
I therefore suspect that MS came across “slow” creates, remote share
is the first to come to mind here.
A “slow” create is really worth cancelling: say, you try to open
something through WebDAV and after the first 30 minutes of waiting
decide that you had enough and cancel it, and guess what? In a sync
case you just have to sip another coffee (or buy another pillow).
[I think/hope my exaggeration is obvious, ok? After all, smb and friends
do have timeouts of their own.]
I may be wrong, as usual, but there must be a practical reason anyway,
I don’t think that internal changes were cheap.
But I’m happy, call me an idealist; whatever the reason for making
creates “normal” was, semi-async OS sounds like semi-pregnant to me:-)
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Tony Mason
Sent: Thursday, May 17, 2007 11:48 PM
To: Windows File Systems Devs Interest List
Subject: RE: [ntfsd] STATUS_PENDING from IRP_MJ_CREATE
“Does it matter” is a complex question:
Are you asking “Does it matter if I only consider the I/O manager case
and ignore all other cases (remember, *anyone* can send an
IRP_MJ_CREATE) and I restrict myself to ancient systems (ergo, anything
before Vista.)” If so, the answer is “no”.
If the question is “does it matter in all possible cases, including
modern versions (e.g., Vista) and considering other callers besides the
I/O Manager.” If so, the answer is “yes”. Honestly, it might break
them because they may not have been tested with Verifier always
returning STATUS_PENDING. But in that case they are broken already.
In Vista, returning allows the create to be *cancelled*. A significant
number of hung applications turn out to be “hung” waiting for a file to
complete it’s open. Microsoft changed the model for usability to allow
canceling an in-progress open operation. This is implemented in the I/O
Manager (for example) but will vanish if you start calling
KeWaitForSingleObject in your driver (unless you use the exact right
magic incantation, which is actually documented as something you should
NOT do - it has to be done “correctly” to ensure the system doesn’t
crash later…)
So if it were me, I’d say “yes, it matters”. Give the option to the
caller. Where it doesn’t matter, it works, where it does matter it
works.
Tony
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@simdesk.com
Sent: Thursday, May 17, 2007 2:57 PM
To: ntfsd redirect
Subject: RE:[ntfsd] STATUS_PENDING from IRP_MJ_CREATE
Tony and Alex, thank you for the extension of my original question. Your
discussion has given me not only the answer to my question, but some
additional background as well.
However, I am now left with a new question… Does it matter? If the I/O
manager is going to block for my create call anyway, will returning
pending do anything useful? I imagine that since I will not be returning
‘very quickly’ in my average case, the proper thing to do is to return
pending. But if the I/O manager just blocks the call anyway, what have I
really gained? I understand that with Vista I may gain the ability to be
cancelable during the create, but lets assume (for the moment) that my
synchronization isn’t cancelable anyway. Could my create just block?
Thanks again.
John Eastman
Simdesk Technologies, Inc.
Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17
You are currently subscribed to ntfsd as: xxxxx@osr.com
To unsubscribe send a blank email to xxxxx@lists.osr.com
Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17
You are currently subscribed to ntfsd as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com