summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2017-05-26 21:09:08 +0800
committerGitHub <[email protected]>2017-05-26 21:09:08 +0800
commit4d4597aa6c317b3ca87d6e8a63a20bbc49c5ba29 (patch)
tree20b4cbdc796a53f9e7de7b1b8fd0de97eddf6eeb
parenta38144407ef3adece8947890a7ac16bb407c4f7d (diff)
parent2426efe6b785742e36e7d48f2c4ad11361047d81 (diff)
Merge pull request #742 from yygg/master
[dfs] fix f_mount error
-rw-r--r--components/dfs/filesystems/elmfat/dfs_elm.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/components/dfs/filesystems/elmfat/dfs_elm.c b/components/dfs/filesystems/elmfat/dfs_elm.c
index a73125e810..443ce5bb0b 100644
--- a/components/dfs/filesystems/elmfat/dfs_elm.c
+++ b/components/dfs/filesystems/elmfat/dfs_elm.c
@@ -28,6 +28,7 @@
* 2014-01-26 Bernard Check the sector size before mount.
* 2017-02-13 Hichard Update Fatfs version to 0.12b, support exFAT.
* 2017-04-11 Bernard fix the st_blksize issue.
+ * 2017-05-26 Urey fix f_mount error when mount more fats
*/
#include <rtthread.h>
@@ -114,11 +115,13 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
FRESULT result;
int index;
struct rt_device_blk_geometry geometry;
+ char logic_nbr[2] = {'0',':'};
/* get an empty position */
index = get_disk(RT_NULL);
if (index == -1)
return -DFS_STATUS_ENOENT;
+ logic_nbr[0] = '0' + index;
/* save device */
disk[index] = fs->dev_id;
@@ -140,7 +143,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
}
/* mount fatfs, always 0 logic driver */
- result = f_mount(fat,"", (BYTE)index);
+ result = f_mount(fat,(const TCHAR*)logic_nbr, 1);
if (result == FR_OK)
{
char drive[8];
@@ -150,7 +153,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
dir = (DIR *)rt_malloc(sizeof(DIR));
if (dir == RT_NULL)
{
- f_mount(RT_NULL,"",(BYTE)index);
+ f_mount(RT_NULL,(const TCHAR*)logic_nbr,1);
disk[index] = RT_NULL;
rt_free(fat);
return -DFS_STATUS_ENOMEM;
@@ -168,7 +171,7 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
}
__err:
- f_mount(RT_NULL, "", (BYTE)index);
+ f_mount(RT_NULL, (const TCHAR*)logic_nbr, 1);
disk[index] = RT_NULL;
rt_free(fat);
return elm_result_to_dfs(result);