From c16d3de633ef1ef1a92b1a3d377de44a46f93865 Mon Sep 17 00:00:00 2001 From: yangfasheng Date: Wed, 9 Jan 2019 17:40:32 +0800 Subject: [PATCH] update dfs.c dfs_file.c dfs_file.h Signed-off-by: yangfasheng --- components/dfs/include/dfs_file.h | 1 + components/dfs/src/dfs.c | 2 +- components/dfs/src/dfs_file.c | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/components/dfs/include/dfs_file.h b/components/dfs/include/dfs_file.h index 7ef681a247..aaff3f6e9c 100644 --- a/components/dfs/include/dfs_file.h +++ b/components/dfs/include/dfs_file.h @@ -44,6 +44,7 @@ struct dfs_fd char *path; /* Name (below mount point) */ int ref_count; /* Descriptor reference count */ + struct dfs_filesystem *fs; const struct dfs_file_ops *fops; uint32_t flags; /* Descriptor flags */ diff --git a/components/dfs/src/dfs.c b/components/dfs/src/dfs.c index 1850ac426c..066c800568 100644 --- a/components/dfs/src/dfs.c +++ b/components/dfs/src/dfs.c @@ -320,7 +320,7 @@ int fd_is_open(const char *pathname) fd = fdt->fds[index]; if (fd == NULL || fd->fops == NULL || fd->path == NULL) continue; - if (fd->fops == fs->ops->fops && strcmp(fd->path, mountpath) == 0) + if (fd->fs == fs && strcmp(fd->path, mountpath) == 0) { /* found file in file descriptor table */ rt_free(fullpath); diff --git a/components/dfs/src/dfs_file.c b/components/dfs/src/dfs_file.c index e7071522ce..4505667738 100644 --- a/components/dfs/src/dfs_file.c +++ b/components/dfs/src/dfs_file.c @@ -66,7 +66,8 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags) } LOG_D("open in filesystem:%s", fs->ops->name); - fd->fops = fs->ops->fops; /* set file ops */ + fd->fs = fs; /* set file system */ + fd->fops = fs->ops->fops; /* set file ops */ /* initialize the fd item */ fd->type = FT_REGULAR; -- GitLab