[Lustre-devel] Re: fixing redundant network opens on Linux file creation

Bryan Henderson hbryan at us.ibm.com
Wed Jan 8 17:54:01 GMT 2003




>I don't see where you are coming from here.  Could you be more specific on
>whether you think the entity declaring an "intent" is user-space, the VFS
>code in fs/*.c, the filesystem driver code in fs/*/*.c or what?

As a general principle, any of those things could declare intent.  In the
Lustre design we're talking about, I don't believe any of them does.  Hence
my objection to the term "intent."  Based on that word, I thought at first
I might just have missed something in the definition of the interface, but
I don't think so anymore.

>I don't
>really see where you can "change your mind" in the middle of creating a
>file, unless there was an error somewhere along the way.

I don't either.  (And apparently, simple errors are no exception in the
Lustre design).  Hence, you have declared significantly more than an intent
when you did the lookup.

>If you call
>sys_mkdir() you have declared an "intent" to create a directory

Not as "intent" is usually understood.  If you call sys_mkdir(), you have
commanded the kernel to create the directory.  That's a lot different from
declaring that you intend to create the directory.

I believe the lustre patch works.  I also believe it uses the wrong
terminology, creates an interface to filesystem drivers that is brittle and
hard to understand, and doesn't solve as wide a range of problems as it
could.  I believe that what it calls a declaration of intent is really a
declaration of what POSIX system call the caller is in the middle of
performing.

On the other hand, it has been pointed out that one of its goals was to
minimize the changes to fs/*.c.  I agree the patch is a good way to achieve
that goal.

If it were my decision, I would solve the Lustre problem, and the Samba
problem, and some of my own as well, by putting higher level filesystem
driver interfaces into Linux, such as some other kernels do.  Let the
filesystem driver do the whole "lookup, create directory, add directory
entry" operation if it wants to, and in that case make just that one call
to the filesystem driver and be done.  Let the filesystem driver deal with
the problems of failures halfway through the sequence.

But suggestions I've made to give more power to filesystem drivers have in
the past met resistance from those who want to keep centralized control and
maintain uniformity among the various filesystem types).




More information about the samba-technical mailing list