Re: (reiserfs) Re: NFSv4 ACLs (was: ...ACL's and reiser...)

From: Xuan Baldauf (xuan--reiserfs@baldauf.org)
Date: Fri Jul 28 2000 - 08:07:47 EST


"Albert D. Cahalan" wrote:

> Xuan Baldauf writes:
>
> > It sounds sophisticated, but you know what is happening if you want
> > to change access of some crowded directory (like "/usr", or "/home"
> > on some systems)? Every ACL of every file within this directory
> > gets updated...
> >
> > Does nobody consider dynamic inheritance?
>
> This is one of the few Netware features that would be hard to emulate.
>
> > Because when accessing
> > a file, as access of every path component needs to be checked
> > anyway, dynamic inheritance should not pose significant overhead,
>
> By default NT does not do path checking. UNIX performance suffers
> from this, and then we go update atime all over the place.

Is path checking really a performance impact? (Most of the time, for
finding a file by filename, you need to walk the directory tree, what
else?)
If path checking is a performance impact:
Why does UNIX currently do path checking? Because of (1) checking
accessibility by means of rwx-permissions and (2) doing atime updates? The
latter can be switched off on most filesystems. If someday rwx is replaced
by ACLs, do you see the possibility that path checking is not needed
anymore? If so, I'd agree that directory inheritance might impact
performance significantly.

> Hard links mess up this idea.

Hard links also mess up the idea to explicitly say "aclcontrol -R 'user
bob deny all' .", because recursive aclcontrol also reaches files which
are reachable by other directories. *pondering*

>
>
> > but is a LOT faster for updating, and probably smarter regarding
> > disk space.
>
> Disk space is not a problem, since unrelated files can share ACLs.
> (maybe try to share any ACL with more than 2 extra entries)

Maybe it is possible to find a speed compromise between dynamically and
statically resolved ACLs: By default, every file has a static pointer to
it's ACL, so access is fast. If the user whishes to change the ACLs of
million of files, he can issue the command. This command stores the new
ACL along with the files to be changed (use wildcards) in a filesystem
structure. A daemon completes touching every file to be changed. Before
the daemon is finished, every access is checked by the filesystem against
the pending ACL changes, and if no match is found, against the static file
ACL. After the daemon is finished, as there are no pending ACL changes,
the filesystem only checks against the static file ACL.

This way, setting ACLs is fast, checking them too, and for the case that
there are no rejections against the ACL changes (or if you ignore
rejections), it is even possible to make ACL changes of a bunch of files
atomic.

Xuân. :o)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jul 31 2000 - 21:00:27 EST