mbox series

[v13,0/4] io_uring: add xattr support

Message ID 20220323154420.3301504-1-shr@fb.com (mailing list archive)
Headers show
Series io_uring: add xattr support | expand

Message

Stefan Roesch March 23, 2022, 3:44 p.m. UTC
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 setxattr_copy and do_setxattr function from setxattr
  Split off the setup part of the setxattr function in the setxattr_copy
  function. Split off the processing part in do_setxattr.

Patch 2: 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 3: io_uring: add fsetxattr and setxattr support
  This adds new functions to support the fsetxattr and setxattr
  functions.

Patch 4: 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.


Changes:
V13: - refreshed the code
     - Review comments mentioned that the statx api in io_uring was
       not following the same pattern as the xattr api. This has
       been fixed by a previous patch (using the same pattern as
       this patch)
V12: - add union to xattr_ctx structure. The getxattr api requires
       a pointer to value and the setxattr requires a const pointer
       to value (with a union this can be unified).
     - use xattr_ctx structure in do_getxattr call.
V11: - removed the do_user_path_at_empty function and directly
       call filename_lookup
     - introduce __io_xattr_finish and io_xattr_finish functions
       to unify the cleanup code
     - remove the older __io_setxattr_finish function
V10: - move do_user_path_at_empty definition to fs/internal.h
     - introduce __io_setxattr_finish function
     - introduce __io_getxattr_finish function
V9 : - keep kvalue in struct xattr_ctx
V8 : - introduce xattr_name struct as advised by Linus
     - remove kname_sz field in xattr_ctx
V7 : - split off setxattr in two functions as recommeneded by
       Christian.
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.
     - addressed Pavel's reordering comment
     - addressed Pavel's putname comment
     - addressed Pavel's kvfree comment
     - 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 (4):
  fs: split off setxattr_copy and do_setxattr 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                 |  29 ++++
 fs/io_uring.c                 | 294 ++++++++++++++++++++++++++++++++++
 fs/xattr.c                    | 141 ++++++++++------
 include/uapi/linux/io_uring.h |   8 +-
 4 files changed, 426 insertions(+), 46 deletions(-)


base-commit: ad9c6ee642a61adae93dfa35582b5af16dc5173a

Comments

Jens Axboe March 30, 2022, 8:27 p.m. UTC | #1
On Wed, 23 Mar 2022 08:44:16 -0700, 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
> 
> [...]

Applied, thanks!

[1/4] fs: split off setxattr_copy and do_setxattr function from setxattr
      commit: bbe6239e931bbb57983dcf94eacc8aaa757d26b0
[2/4] fs: split off do_getxattr from getxattr
      commit: 9c8ebeb51e866b9d0fa16fa628797d7e9483a6fc
[3/4] io_uring: add fsetxattr and setxattr support
      commit: 7c0773d493344a03e40a71c66fbe080c1fd87acb
[4/4] io_uring: add fgetxattr and getxattr support
      commit: b2fdcc6667b89e4da68b5543b641e809145432f8

Best regards,