On 12/23/21 4:04 AM, Christian Brauner wrote: > On Wed, Dec 22, 2021 at 01:01:22PM -0800, Stefan Roesch wrote: >> 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 >> >> Patch 1: fs: split off do_user_path_at_empty from user_path_at_empty() >> This splits off a new function do_user_path_at_empty from >> user_path_at_empty that is based on filename and not on a >> user-specified string. >> >> Patch 2: fs: split off setxattr_setup function from setxattr >> Split off the setup part of the setxattr function. >> >> Patch 3: fs: split off do_getxattr from getxattr >> Split of the do_getxattr part from getxattr. This will >> allow it to be invoked 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. >> >> >> V6: - reverted addition of kname array to xattr_ctx structure >> Adding the kname array increases the io_kiocb beyond 64 bytes >> (increases it to 224 bytes). We try hard to limit it to 64 bytes. >> Keeping the original interface also is a bit more efficient. >> - rebased on for-5.17/io_uring-getdents64 >> V5: - add kname array to xattr_ctx structure >> V4: - rebased patch series >> V3: - remove req->file checks in prep functions >> - change size parameter in do_xattr >> V2: - split off function do_user_path_empty instead of changing >> the function signature of user_path_at >> - Fix datatype size problem in do_getxattr >> >> >> >> Stefan Roesch (5): >> fs: split off do_user_path_at_empty from user_path_at_empty() >> fs: split off setxattr_setup function from setxattr >> fs: split off do_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 | 318 ++++++++++++++++++++++++++++++++++ >> fs/namei.c | 10 +- >> fs/xattr.c | 107 ++++++++---- >> include/linux/namei.h | 2 + >> include/uapi/linux/io_uring.h | 8 +- >> 6 files changed, 428 insertions(+), 40 deletions(-) >> >> >> base-commit: b4518682080d3a1cdd6ea45a54ff6772b8b2797a > > Jens, please keep me in the loop once this series lands. You bet, and thanks for the reviews! > I maintain a large vfs testsuite for idmapped mounts (It's actually a > generic testsuite which also tests idmapped mounts.) and it currently > already has tests for io_uring: > > https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/tree/src/idmapped-mounts/idmapped-mounts.c#n6942 > > Once this lands we need to expand it to test xattr support for io_uring > as well (It should probably also include mkdir/link/mknod that we added > last cycle.). There are a few basic tests here: https://git.kernel.dk/cgit/liburing/log/?h=xattr as well, but more of a sanity kind of checking, would be great if tests were added to the VFS suite as well. With the last few kinks ironed out, I hope to queue the next version posted for 5.17. -- Jens Axboe