From: MikeLiu Date: Tue, 22 Aug 2023 02:01:14 +0000 (+0800) Subject: vfs_aio_pthread: use SMB_VFS_NEXT_OPENAT() in aio_pthread_openat_fn() X-Git-Tag: samba-4.17.11~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1361e545452faca0d2f85d4a82aa06535c129d76;p=thirdparty%2Fsamba.git vfs_aio_pthread: use SMB_VFS_NEXT_OPENAT() in aio_pthread_openat_fn() 1. Set 'aio_allow_open' to false if fsp->fsp_flags.is_pathref 2. Move !(how->flags & O_CREAT) and !(how->flags & O_EXCL) up and set 'aio_allow_open' to false 3. Use SMB_VFS_NEXT_OPENAT() instead of openat() for disable async opens case. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15453 Signed-off-by: MikeLiu Reviewed-by: Stefan Metzmacher Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Tue Aug 22 17:44:00 UTC 2023 on atb-devel-224 Autobuild-User(v4-17-test): Jule Anger Autobuild-Date(v4-17-test): Mon Sep 4 09:35:04 UTC 2023 on sn-devel-184 --- diff --git a/source3/modules/vfs_aio_pthread.c b/source3/modules/vfs_aio_pthread.c index 0303ff04bc9..b099a6b5b52 100644 --- a/source3/modules/vfs_aio_pthread.c +++ b/source3/modules/vfs_aio_pthread.c @@ -483,28 +483,28 @@ static int aio_pthread_openat_fn(vfs_handle_struct *handle, aio_allow_open = false; } - if (!aio_allow_open) { - /* aio opens turned off. */ - return openat(fsp_get_pathref_fd(dirfsp), - smb_fname->base_name, - how->flags, - how->mode); + if (fsp->fsp_flags.is_pathref) { + /* Use SMB_VFS_NEXT_OPENAT() to call openat() with O_PATH. */ + aio_allow_open = false; } if (!(how->flags & O_CREAT)) { /* Only creates matter. */ - return openat(fsp_get_pathref_fd(dirfsp), - smb_fname->base_name, - how->flags, - how->mode); + aio_allow_open = false; } if (!(how->flags & O_EXCL)) { /* Only creates with O_EXCL matter. */ - return openat(fsp_get_pathref_fd(dirfsp), - smb_fname->base_name, - how->flags, - how->mode); + aio_allow_open = false; + } + + if (!aio_allow_open) { + /* aio opens turned off. */ + return SMB_VFS_NEXT_OPENAT(handle, + dirfsp, + smb_fname, + fsp, + how); } /*