[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180923230150.32qbjhnnzy56x3yy@brauner.io>
Date: Mon, 24 Sep 2018 01:01:51 +0200
From: Christian Brauner <christian@...uner.io>
To: David Howells <dhowells@...hat.com>
Cc: Miklos Szeredi <mszeredi@...hat.com>,
Al Viro <viro@...IV.linux.org.uk>,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 5/6] fsmount: do not use legacy MS_ flags
On Sun, Sep 23, 2018 at 11:45:17PM +0100, David Howells wrote:
> Christian Brauner <christian@...uner.io> wrote:
>
> > Of course, I'm not sure what the reasons for all of the other arguments to
> > this function are since it's not yet implemented.
>
> Well, dfd, path and atflags are pretty standard. atflags conveys things like
> AT_EMPTY_PATH or AT_SYMLINK_NOFOLLOW and dfd conveys a file descriptor
> pointing to a vfs object or AT_FDCWD.
>
> > Seems that attr_values and attr_mask could be compacted to a single
> > attr_mask maybe?
>
> If you don't have a mask, you can't really do recursion. Without the mask,
> you have to supply the entire set of options absolutely - and this would get
> stamped on everything in the target range.
>
> With a mask in combination with the set of desired values, you can turn on or
> off a specific subset of the attributes without affecting the rest - without
> needing to know the rest.
Ok, understood. What about passing the different attrs as a struct?
struct mount_attr {
unsigned int attr_cmd,
unsigned int attr_values,
unsigned int attr_mask,
};
mount_setattr(int dfd, const char *path, unsigned int atflags,
struct mount_attr *attr);
I find that to be a little cleaner in all honesty.
One could also add a version argument similar to what we currently do
for vfs fcaps so that kernel and userspace can easily navigate
compabitility when a new member gets added or removed in later releases.
Christian
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists