Browse Source

Merge pull request #217 from grissiom/fix-dfs

DFS: let mount fail on device open error
prife 11 years ago
parent
commit
eac3b8d96c
1 changed files with 10 additions and 1 deletions
  1. 10 1
      components/dfs/src/dfs_fs.c

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

@@ -285,7 +285,16 @@ int dfs_mount(const char   *device_name,
 
     /* open device, but do not check the status of device */
     if (dev_id != RT_NULL)
-        rt_device_open(fs->dev_id, RT_DEVICE_OFLAG_RDWR);
+    {
+        if (rt_device_open(fs->dev_id,
+                           RT_DEVICE_OFLAG_RDWR) != RT_EOK)
+        {
+            /* The underlaying device has error, clear the entry. */
+            dfs_lock();
+            rt_memset(fs, 0, sizeof(struct dfs_filesystem));
+            goto err1;
+        }
+    }
 
     /* call mount of this filesystem */
     if ((*ops)->mount(fs, rwflag, data) < 0)