On 6/3/21 6:18 AM, Dmitry Kadashev wrote: > This started out as an attempt to add mkdirat support to io_uring which > is heavily based on renameat() / unlinkat() support. > > During the review process more operations were added (linkat, symlinkat, > mknodat) mainly to keep things uniform internally (in namei.c), and > with things changed in namei.c adding support for these operations to > io_uring is trivial, so that was done too. See > https://lore.kernel.org/io-uring/20210514145259.wtl4xcsp52woi6ab@wittgenstein/ io_uring part looks good in general, just small comments. However, I believe we should respin it, because there should be build problems in the middle. > 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. > > 3-6 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. > > 7 changes do_* helpers in namei.c to return ints rather than some of > them returning ints and some longs. > > 8-10 add symlinkat, linkat and mknodat support to io_uring > (correspondingly). > > Based on for-5.14/io_uring. > > v5: > - rebase > - add symlinkat, linkat and mknodat support to io_uring > > 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 (10): > 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: update do_*() helpers to return ints > io_uring: add support for IORING_OP_SYMLINKAT > io_uring: add support for IORING_OP_LINKAT > io_uring: add support for IORING_OP_MKNODAT > > fs/exec.c | 8 +- > fs/internal.h | 10 +- > fs/io_uring.c | 240 ++++++++++++++++++++++++++++++++++ > fs/namei.c | 137 ++++++++++++------- > include/linux/fs.h | 1 + > include/uapi/linux/io_uring.h | 6 + > 6 files changed, 349 insertions(+), 53 deletions(-) > -- Pavel Begunkov