This adds mkdirat support to io_uring and is heavily based on recently added renameat() / unlinkat() support. The first patch is preparation with no functional changes, makes do_mkdirat accept struct filename pointer rather than the user string. The second one leverages that to implement mkdirat in io_uring. The rest of the patches just convert other similar do_* functions in namei.c to accept struct filename, for uniformity with do_mkdirat, do_renameat and do_unlinkat. No functional changes there. Based on io_uring-5.13. v4: - update do_mknodat, do_symlinkat and do_linkat to accept struct filename for uniformity with do_mkdirat, do_renameat and do_unlinkat; v3: - rebase; v2: - do not mess with struct filename's refcount in do_mkdirat, instead add and use __filename_create() that does not drop the name on success; Dmitry Kadashev (6): fs: make do_mkdirat() take struct filename io_uring: add support for IORING_OP_MKDIRAT fs: make do_mknodat() take struct filename fs: make do_symlinkat() take struct filename namei: add getname_uflags() fs: make do_linkat() take struct filename fs/exec.c | 8 +- fs/internal.h | 1 + fs/io_uring.c | 55 ++++++++++++++ fs/namei.c | 135 +++++++++++++++++++++++----------- include/linux/fs.h | 1 + include/uapi/linux/io_uring.h | 1 + 6 files changed, 152 insertions(+), 49 deletions(-) -- 2.30.2