From fb1faa07461ed51a3f09fcaca063bf58a2d3d4b3 Mon Sep 17 00:00:00 2001 From: Tennn11 <88527847+Tennn11@users.noreply.github.com> Date: Thu, 27 Jul 2023 17:23:39 +0800 Subject: [PATCH] =?UTF-8?q?[dfs=20v2]fix=20fcntl(F=5FSETFL)=20bug,and=20mo?= =?UTF-8?q?dify=20the=20error=20code=20when=20opening=E2=80=A6=20(#7878)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/dfs/dfs_v2/src/dfs_file.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/components/dfs/dfs_v2/src/dfs_file.c b/components/dfs/dfs_v2/src/dfs_file.c index 9ed0a2b2c7..52b1a63210 100644 --- a/components/dfs/dfs_v2/src/dfs_file.c +++ b/components/dfs/dfs_v2/src/dfs_file.c @@ -502,6 +502,7 @@ int dfs_file_open(struct dfs_file *file, const char *path, int oflags, mode_t mo else { LOG_I("lookup file:%s failed in file system", path); + ret = -ENOENT; } } @@ -907,8 +908,25 @@ int dfs_file_fcntl(int fd, int cmd, unsigned long arg) ret = file->flags; break; case F_SETFL: - file->flags = arg; + { + int flags = (int)(rt_base_t)arg; + int mask = +#ifdef O_ASYNC + O_ASYNC | +#endif +#ifdef O_DIRECT + O_DIRECT | +#endif +#ifdef O_NOATIME + O_NOATIME | +#endif + O_APPEND | O_NONBLOCK; + + flags &= mask; + file->flags &= ~mask; + file->flags |= flags; break; + } case F_GETLK: break; case F_SETLK: