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. > Patch 1: fs: make user_path_at_empty() take a struct filename > The user_path_at_empty filename parameter has been changed > from a const char user pointer to a filename struct. io_uring > operates on filenames. > In addition also the functions that call user_path_at_empty > in namei.c and stat.c have been modified for this change. > > Patch 2: fs: split off setxattr_setup function from setxattr > Split off the setup part of the setxattr function > > Patch 3: fs: split off the vfs_getxattr from getxattr > Split of the vfs_getxattr part from getxattr. This will > allow to invoke it from io_uring. > > Patch 4: io_uring: add fsetxattr and setxattr support > This adds new functions to support the fsetxattr and setxattr > functions. > > Patch 5: io_uring: add fgetxattr and getxattr support > This adds new functions to support the fgetxattr and getxattr > functions. > > > There are two additional patches: > liburing: Add support for xattr api's. > This also includes the tests for the new code. > xfstests: Add support for io_uring xattr support. > > > Stefan Roesch (5): > fs: make user_path_at_empty() take a struct filename > fs: split off setxattr_setup function from setxattr > fs: split off the vfs_getxattr from getxattr > io_uring: add fsetxattr and setxattr support > io_uring: add fgetxattr and getxattr support > > fs/internal.h | 23 +++ > fs/io_uring.c | 325 ++++++++++++++++++++++++++++++++++ > fs/namei.c | 5 +- > fs/stat.c | 7 +- > fs/xattr.c | 114 +++++++----- > include/linux/namei.h | 4 +- > include/uapi/linux/io_uring.h | 8 +- > 7 files changed, 439 insertions(+), 47 deletions(-) > > > Signed-off-by: Stefan Roesch <shr@xxxxxx> > base-commit: c2626d30f312afc341158e07bf088f5a23b4eeeb > -- > 2.30.2