Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party NuttX
提交
12680f39
T
Third Party NuttX
项目概览
OpenHarmony
/
Third Party NuttX
大约 1 年 前同步成功
通知
5
Star
19
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party NuttX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
12680f39
编写于
11月 11, 2021
作者:
O
openharmony_ci
提交者:
Gitee
11月 11, 2021
浏览文件
操作
浏览文件
下载
差异文件
!100 [LTS-3.0]fix: 修复NFS使用不可靠父节点信息的错误
Merge pull request !100 from Far/cherry-pick-1636458683
上级
2770c463
80c4cea1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
26 addition
and
16 deletion
+26
-16
fs/nfs/nfs_adapter.c
fs/nfs/nfs_adapter.c
+24
-16
fs/nfs/nfs_node.h
fs/nfs/nfs_node.h
+2
-0
未找到文件。
fs/nfs/nfs_adapter.c
浏览文件 @
12680f39
...
...
@@ -824,6 +824,7 @@ int vfs_nfs_mount(struct Mount *mnt, struct Vnode *device, const void *data)
vp
->
data
=
root
;
root
->
n_fhsize
=
nmp
->
nm_fhsize
;
(
void
)
memcpy_s
(
&
(
root
->
n_fhandle
),
root
->
n_fhsize
,
&
(
nmp
->
nm_fh
),
nmp
->
nm_fhsize
);
root
->
n_pfhsize
=
0
;
mnt
->
vnodeCovered
=
vp
;
mnt
->
data
=
nmp
;
root
->
n_next
=
nmp
->
nm_head
;
...
...
@@ -874,6 +875,8 @@ int vfs_nfs_lookup(struct Vnode *parent, const char *path, int len, struct Vnode
nfs_node
=
zalloc
(
sizeof
(
struct
nfsnode
));
nfs_node
->
n_fhsize
=
(
uint8_t
)
fhandle
.
length
;
memcpy_s
(
&
(
nfs_node
->
n_fhandle
),
nfs_node
->
n_fhsize
,
&
(
fhandle
.
handle
),
fhandle
.
length
);
nfs_node
->
n_pfhsize
=
parent_nfs_node
->
n_fhsize
;
(
void
)
memcpy_s
(
&
(
nfs_node
->
n_pfhandle
),
NFSX_V3FHMAX
,
&
(
parent_nfs_node
->
n_fhandle
),
parent_nfs_node
->
n_fhsize
);
nfs_node
->
n_name
=
zalloc
(
sizeof
(
filename
));
memcpy_s
(
nfs_node
->
n_name
,
(
len
+
1
),
filename
,
sizeof
(
filename
));
nfs_node
->
n_next
=
nmp
->
nm_head
;
...
...
@@ -1523,6 +1526,8 @@ int vfs_nfs_mkdir(struct Vnode *parent, const char *dirname, mode_t mode, struct
target_node
=
zalloc
(
sizeof
(
struct
nfsnode
));
target_node
->
n_fhsize
=
(
uint8_t
)
fhandle
.
length
;
memcpy_s
(
&
(
target_node
->
n_fhandle
),
target_node
->
n_fhsize
,
&
(
fhandle
.
handle
),
fhandle
.
length
);
target_node
->
n_pfhsize
=
parent_nfs_node
->
n_fhsize
;
(
void
)
memcpy_s
(
&
(
target_node
->
n_pfhandle
),
NFSX_V3FHMAX
,
&
(
parent_nfs_node
->
n_fhandle
),
parent_nfs_node
->
n_fhsize
);
target_node
->
n_name
=
zalloc
(
sizeof
(
dirname
));
memcpy_s
(
target_node
->
n_name
,
sizeof
(
dirname
),
dirname
,
sizeof
(
dirname
));
target_node
->
n_next
=
nmp
->
nm_head
;
...
...
@@ -1576,10 +1581,10 @@ int vfs_nfs_write(struct file *filep, const char *buffer, size_t buflen)
goto
errout_with_mutex
;
}
parent_fhandle
.
length
=
((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhsize
;
memcpy_s
(
&
(
parent_fhandle
.
handle
),
parent_fhandle
.
length
,
&
(((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhandle
),
((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhsize
);
parent_fhandle
.
length
=
((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhsize
;
(
void
)
memcpy_s
(
&
(
parent_fhandle
.
handle
),
NFSX_V3FHMAX
,
&
(((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhandle
),
((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhsize
);
if
(
filep
->
f_oflags
&
O_APPEND
)
{
...
...
@@ -1794,10 +1799,10 @@ ssize_t vfs_nfs_writepage(struct Vnode *node, char *buffer, off_t pos, size_t bu
goto
errout_with_mutex
;
}
parent_fhandle
.
length
=
((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhsize
;
memcpy_s
(
&
(
parent_fhandle
.
handle
),
parent_fhandle
.
length
,
&
(((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhandle
),
((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhsize
);
parent_fhandle
.
length
=
((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhsize
;
(
void
)
memcpy_s
(
&
(
parent_fhandle
.
handle
),
NFSX_V3FHMAX
,
&
(((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhandle
),
((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhsize
);
/* Check if the file size would exceed the range of off_t */
...
...
@@ -2066,10 +2071,10 @@ ssize_t vfs_nfs_readpage(struct Vnode *node, char *buffer, off_t pos)
}
parent_fhandle
.
length
=
((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhsize
;
memcpy_s
(
&
(
parent_fhandle
.
handle
),
parent_fhandle
.
length
,
&
(((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhandle
),
((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhsize
);
parent_fhandle
.
length
=
((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhsize
;
(
void
)
memcpy_s
(
&
(
parent_fhandle
.
handle
),
NFSX_V3FHMAX
,
&
(((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhandle
),
((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhsize
);
error
=
nfs_fileupdate
(
nmp
,
np
->
n_name
,
&
parent_fhandle
,
np
);
if
(
error
!=
OK
)
{
...
...
@@ -2217,10 +2222,10 @@ ssize_t vfs_nfs_read(struct file *filep, char *buffer, size_t buflen)
}
parent_fhandle
.
length
=
((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhsize
;
memcpy_s
(
&
(
parent_fhandle
.
handle
),
parent_fhandle
.
length
,
&
(((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhandle
),
((
struct
nfsnode
*
)
node
->
parent
->
data
)
->
n_
fhsize
);
parent_fhandle
.
length
=
((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhsize
;
(
void
)
memcpy_s
(
&
(
parent_fhandle
.
handle
),
NFSX_V3FHMAX
,
&
(((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhandle
),
((
struct
nfsnode
*
)
node
->
data
)
->
n_p
fhsize
);
error
=
nfs_fileupdate
(
nmp
,
np
->
n_name
,
&
parent_fhandle
,
np
);
if
(
error
!=
OK
)
{
...
...
@@ -2497,6 +2502,9 @@ int vfs_nfs_create(struct Vnode *parent, const char *filename, int mode, struct
np
->
n_next
=
nmp
->
nm_head
;
nmp
->
nm_head
=
np
;
np
->
n_pfhsize
=
parent_nfs_node
->
n_fhsize
;
(
void
)
memcpy_s
(
&
(
np
->
n_pfhandle
),
NFSX_V3FHMAX
,
&
(
parent_nfs_node
->
n_fhandle
),
parent_nfs_node
->
n_fhsize
);
np
->
n_flags
|=
(
NFSNODE_OPEN
|
NFSNODE_MODIFIED
);
np
->
n_name
=
zalloc
(
namelen
+
1
);
memcpy_s
(
np
->
n_name
,
(
namelen
+
1
),
filename
,
(
namelen
+
1
));
...
...
fs/nfs/nfs_node.h
浏览文件 @
12680f39
...
...
@@ -79,12 +79,14 @@ struct nfsnode
uint8_t
n_crefs
;
/* Reference count (for nfs_dup) */
uint8_t
n_type
;
/* File type */
uint8_t
n_fhsize
;
/* Size in bytes of the file handle */
uint8_t
n_pfhsize
;
/* Size in bytes of the file handle of parent */
uint8_t
n_flags
;
/* Node flags */
uint16_t
n_mode
;
/* File mode for fstat() */
time_t
n_atime
;
/* File access time */
time_t
n_mtime
;
/* File modification time */
time_t
n_ctime
;
/* File creation time */
nfsfh_t
n_fhandle
;
/* NFS File Handle */
nfsfh_t
n_pfhandle
;
/* NFS File Handle of parent */
uint64_t
n_size
;
/* Current size of file */
int
n_oflags
;
/* Flags provided when file was opened */
loff_t
n_fpos
;
/* NFS File position */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录