add f_opendir to open root directory in dfs_elm_mount to make sure that there is a valid fat
partition on physical media. git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2251 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
3dbbc479fc
commit
063fb36089
|
@ -103,7 +103,26 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d
|
||||||
/* mount fatfs, always 0 logic driver */
|
/* mount fatfs, always 0 logic driver */
|
||||||
result = f_mount(index, fat);
|
result = f_mount(index, fat);
|
||||||
if (result == FR_OK)
|
if (result == FR_OK)
|
||||||
|
{
|
||||||
|
char drive[8];
|
||||||
|
DIR * dir;
|
||||||
|
|
||||||
|
rt_snprintf(drive, sizeof(drive), "%d:/", fat->drv);
|
||||||
|
dir = (DIR *)rt_malloc(sizeof(DIR));
|
||||||
|
if (dir == RT_NULL)
|
||||||
|
return -DFS_STATUS_ENOMEM;
|
||||||
|
|
||||||
|
/* open the root directory to test whether the fatfs is valid */
|
||||||
|
result = f_opendir(dir, drive);
|
||||||
|
if (result != FR_OK)
|
||||||
|
{
|
||||||
|
rt_free(dir);
|
||||||
|
return elm_result_to_dfs(result);
|
||||||
|
}
|
||||||
|
rt_free(dir);
|
||||||
|
|
||||||
fs->data = fat;
|
fs->data = fat;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rt_free(fat);
|
rt_free(fat);
|
||||||
|
|
Loading…
Reference in New Issue