I coincidentally just wrote about some of this in another email. Wasn't
trying to avoid you...
Exactly.
The fh_t would be validated either (a) when the openfh() is called, or
on accesses using the associated capability. As Christoph pointed out,
this really is a capability and encapsulates everything necessary for a
particular user to access a particular file. It can be handed to others,
and in fact that is a critical feature for our use case.
After the openfh(), the access model is identical to a previously
open()ed file. So the question is what happens between the openg() and
the openfh().
Our intention was to allow servers to "forget" these fh_ts at will. So a
revoke between openg() and openfh() would kill the fh_t, and the
subsequent openfh() would fail, or subsequent accesses would fail
(depending on when the FS chose to validate).
Does this help?
> :
We could use advice on this point. Certainly it's possible to encode
information about the FS from which the fh_t originated, but we haven't
tried to spell out exactly how that would happen. Your approach
described here sounds good to me.
Yes, naive application. You're right that the file system could adapt to
this, but on the other hand if we were explicitly passing the fh_t in
user space, we could just use MPI_Bcast and be done with it, with an
algorithm that is well-matched to the system, etc.
Absolutely. Same goes for readx()/writex() also, BTW, at least for
MPI-IO users. We will build the input parameters inside MPI-IO using
existing information from users, rather than applying data sieving or
using multiple POSIX calls.
I'm sorry if it seems like I'm ignoring your concerns; that isn't my
intention. I am advocating the calls though, because the whole point in
getting into these discussions is to improve the state of things for
these access patterns.
Part of the problem is that the descriptions of these calls were written
for inclusion in a POSIX document and not for discussion on this list.
Those descriptions don't usually include detailed descriptions of
implementation options or use cases. We should have created some
additional documentation before coming to this list, but what is done is
done.
In the case of openg(), the major approach to things "going wrong" is
for the server to just forget it ever handed out the fh_t and make the
application figure it out. We think that makes implementations
relatively simple, because we don't require so much. It makes using this
capability a little more difficult outside the kernel, but we're
prepared for that.
> I'd be interested in
Really? Ack! Ok. I'll talk with the others and get a readx()/writex()
page up soon, although it would be nice to let the discussion of these
few calm down a bit before we start with those...I'm not getting much
done at work right now :).
Thanks for the discussion,
Rob
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html