diff options
| author | Bernard Xiong <[email protected]> | 2014-11-01 10:53:44 +0800 |
|---|---|---|
| committer | Bernard Xiong <[email protected]> | 2014-11-01 10:53:44 +0800 |
| commit | b081df6b937360aa53bc27f56066f83c2327167b (patch) | |
| tree | 84d31b5e0f51f7ad28cbeb38dfc2bb9d2725897e /components | |
| parent | d2e15a52e62dc4f9430ba6ce06ac085daeb6d91d (diff) | |
[NFS] fix opendir failed issue.
Diffstat (limited to 'components')
| -rw-r--r-- | components/dfs/filesystems/nfs/dfs_nfs.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/components/dfs/filesystems/nfs/dfs_nfs.c b/components/dfs/filesystems/nfs/dfs_nfs.c index 5f03314309..7ff5fef5f7 100644 --- a/components/dfs/filesystems/nfs/dfs_nfs.c +++ b/components/dfs/filesystems/nfs/dfs_nfs.c @@ -750,11 +750,12 @@ int nfs_open(struct dfs_fd *file) if (file->flags & DFS_O_CREAT) { if (nfs_mkdir(nfs, file->path, 0755) < 0) - return -1; + return -DFS_STATUS_EAGAIN; } /* open directory */ dir = nfs_opendir(nfs, file->path); + if (dir == RT_NULL) return -DFS_STATUS_ENOENT; file->data = dir; } else @@ -766,20 +767,20 @@ int nfs_open(struct dfs_fd *file) if (file->flags & DFS_O_CREAT) { if (nfs_create(nfs, file->path, 0664) < 0) - return -1; + return -DFS_STATUS_EAGAIN; } /* open file (get file handle ) */ fp = rt_malloc(sizeof(nfs_file)); if (fp == RT_NULL) - return -1; + return -DFS_STATUS_ENOMEM; handle = get_handle(nfs, file->path); if (handle == RT_NULL) { rt_free(fp); - return -1; + return -DFS_STATUS_ENOENT; } /* get size of file */ @@ -798,7 +799,7 @@ int nfs_open(struct dfs_fd *file) /* set private file */ file->data = fp; - file->size = fp->size; + file->size = fp->size; } return 0; |
