public inbox for [email protected]
 help / color / mirror / Atom feed
From: Christian Brauner <[email protected]>
To: Clay Harris <[email protected]>
Cc: Stefan Roesch <[email protected]>,
	[email protected], [email protected]
Subject: Re: [PATCH v1 0/5] io_uring: add xattr support
Date: Wed, 1 Dec 2021 14:14:14 +0100	[thread overview]
Message-ID: <20211201131414.neoskbfqs56e4vt2@wittgenstein> (raw)
In-Reply-To: <[email protected]>

On Wed, Dec 01, 2021 at 01:46:21AM -0600, Clay Harris wrote:
> On Tue, Nov 30 2021 at 22:07:47 -0800, Stefan Roesch quoth thus:
> 
> > 
> > 
> > On 11/29/21 5:08 PM, Clay Harris wrote:
> > > On Mon, Nov 29 2021 at 14:12:52 -0800, Stefan Roesch quoth thus:
> > > 
> > >> This adds the xattr support to io_uring. The intent is to have a more
> > >> complete support for file operations in io_uring.
> > >>
> > >> This change adds support for the following functions to io_uring:
> > >> - fgetxattr
> > >> - fsetxattr
> > >> - getxattr
> > >> - setxattr
> > > 
> > > You may wish to consider the following.
> > > 
> > > Patching for these functions makes for an excellent opportunity
> > > to provide a better interface.  Rather than implement fXetattr
> > > at all, you could enable io_uring to use functions like:
> > > 
> > > int Xetxattr(int dfd, const char *path, const char *name,
> > > 	[const] void *value, size_t size, int flags);
> > > 
> > > Not only does this simplify the io_uring interface down to two
> > > functions, but modernizes and fixes a deficit in usability.
> > > In terms of io_uring, this is just changing internal interfaces.
> > > 
> > > Although unnecessary for io_uring, it would be nice to at least
> > > consider what parts of this code could be leveraged for future
> > > Xetxattr2 syscalls.
> > 
> 
> I may have become a little over-excited when I saw someone was thinking
> about new code associated with these interfaces.  It's just that, to be
> very kind, the existing interfaces have so much room for improvement.
> I'm aware that changes in this area can be a non-trivial amount of
> work, due to specific xattr keys being handled by different security
> module hooks.
> 
> > Clay, 
> > 
> > while we can reduce the number of calls to 2, providing 4 calls will
> > ease the adoption of the interface. 
> 
> Well, there's removexattr(), but who's counting?
> I believe people use the other *at() interfaces without ever looking
> back at the old calls and that there is little point in io_uring reproducing
> all of the old baggage.
> 
> > If you look at the userspace interface in liburing, you can see the
> > following function signature:
> > 
> > static inline void io_uring_prep_fgetxattr(struct io_uring_sqe *sqe,
> > 		                           int         fd,
> > 					   const char *name,
> > 					   const char *value,
> > 					   size_t      len)
> > 
> > This is very similar to what you proposed.
> 
> Even though these functions desperately need updating, and as super nice

This code could use some serious cleanup as it is super hard to follow
right now imho. It often gives the impression of forming loops when
following callchains down into the filesystem. None of this is by
design of course. I just happened to grow that way, I guess.
However, for maintenance this is quite painful. I also don't like that
the relationship between xattr and acls and the .set_acl inode methods
is rather opaque in the code. I have a vague plan to cleanup some of
that since I had to mess with this code not too long ago.
But that'll be a bigger chunk of work.

Christian

  reply	other threads:[~2021-12-01 13:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-29 22:12 [PATCH v1 0/5] io_uring: add xattr support Stefan Roesch
2021-11-29 22:12 ` [PATCH v1 1/5] fs: make user_path_at_empty() take a struct filename Stefan Roesch
2021-11-30  2:09   ` kernel test robot
2021-11-29 22:12 ` [PATCH v1 2/5] fs: split off setxattr_setup function from setxattr Stefan Roesch
2021-11-29 22:12 ` [PATCH v1 3/5] fs: split off the vfs_getxattr from getxattr Stefan Roesch
2021-11-29 22:12 ` [PATCH v1 4/5] io_uring: add fsetxattr and setxattr support Stefan Roesch
2021-11-29 22:12 ` [PATCH v1 5/5] io_uring: add fgetxattr and getxattr support Stefan Roesch
2021-11-30  1:08 ` [PATCH v1 0/5] io_uring: add xattr support Clay Harris
2021-11-30  3:16   ` Andreas Dilger
2021-11-30  6:37     ` Clay Harris
2021-11-30  6:53       ` Clay Harris
2021-11-30 11:40         ` Clay Harris
2021-11-30  7:19     ` Dave Chinner
2021-12-01  6:16     ` Stefan Roesch
2021-12-01  6:07   ` Stefan Roesch
2021-12-01  7:46     ` Clay Harris
2021-12-01 13:14       ` Christian Brauner [this message]
2021-12-01 12:19     ` Stefan Metzmacher
2021-12-01 19:52       ` Clay Harris
2021-12-01 20:05         ` Andreas Dilger
2021-12-03 17:58       ` Stefan Roesch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211201131414.neoskbfqs56e4vt2@wittgenstein \
    [email protected] \
    [email protected] \
    [email protected] \
    [email protected] \
    [email protected] \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox