Bläddra i källkod

dfs: fix dfs_unmount bug

fix #211
prife 11 år sedan
förälder
incheckning
4f9dc273ec
1 ändrade filer med 12 tillägg och 1 borttagningar
  1. 12 1
      components/dfs/src/dfs_fs.c

+ 12 - 1
components/dfs/src/dfs_fs.c

@@ -320,6 +320,7 @@ err1:
 int dfs_unmount(const char *specialfile)
 {
     char *fullpath;
+    struct dfs_filesystem *iter;
     struct dfs_filesystem *fs = RT_NULL;
 
     fullpath = dfs_normalize_path(RT_NULL, specialfile);
@@ -333,7 +334,17 @@ int dfs_unmount(const char *specialfile)
     /* lock filesystem */
     dfs_lock();
 
-    fs = dfs_filesystem_lookup(fullpath);
+    for (iter = &filesystem_table[0];
+            iter < &filesystem_table[DFS_FILESYSTEMS_MAX]; iter++)
+    {
+        /* check if the PATH is mounted */
+        if ((iter->path != NULL) && (strcmp(iter->path, fullpath) == 0))
+        {
+            fs = iter;
+            break;
+        }
+    }
+
     if (fs == RT_NULL ||
         fs->ops->unmount == RT_NULL ||
         fs->ops->unmount(fs) < 0)