Преглед на файлове

update dfs.c dfs_file.c dfs_file.h

Signed-off-by: yangfasheng <yangfasheng@rt-thread.com>
yangfasheng преди 6 години
родител
ревизия
c16d3de633
променени са 3 файла, в които са добавени 4 реда и са изтрити 2 реда
  1. 1 0
      components/dfs/include/dfs_file.h
  2. 1 1
      components/dfs/src/dfs.c
  3. 2 1
      components/dfs/src/dfs_file.c

+ 1 - 0
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 */

+ 1 - 1
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);

+ 2 - 1
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;