Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
422c93c8
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
422c93c8
编写于
10月 06, 2016
作者:
T
Trond Myklebust
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pNFS/flexfiles: Minor refactoring before adding iostats to layoutreturn
Signed-off-by:
N
Trond Myklebust
<
trond.myklebust@primarydata.com
>
上级
2f8220c1
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
44 addition
and
33 deletion
+44
-33
fs/nfs/flexfilelayout/flexfilelayout.c
fs/nfs/flexfilelayout/flexfilelayout.c
+34
-25
fs/nfs/nfs42proc.c
fs/nfs/nfs42proc.c
+6
-3
fs/nfs/nfs42xdr.c
fs/nfs/nfs42xdr.c
+3
-2
fs/nfs/pnfs.h
fs/nfs/pnfs.h
+0
-1
include/linux/nfs_xdr.h
include/linux/nfs_xdr.h
+1
-2
未找到文件。
fs/nfs/flexfilelayout/flexfilelayout.c
浏览文件 @
422c93c8
...
...
@@ -1988,7 +1988,7 @@ static int ff_layout_encode_ioerr(struct nfs4_flexfile_layout *flo,
}
/* report nothing for now */
static
void
ff_layout_encode_iostats
(
struct
nfs4_flexfile_layout
*
flo
,
static
void
ff_layout_encode_iostats
_array
(
struct
nfs4_flexfile_layout
*
flo
,
struct
xdr_stream
*
xdr
,
const
struct
nfs4_layoutreturn_args
*
args
)
{
...
...
@@ -2026,7 +2026,7 @@ ff_layout_encode_layoutreturn(struct xdr_stream *xdr,
BUG_ON
(
!
start
);
ff_layout_encode_ioerr
(
flo
,
xdr
,
args
,
ff_opaque
->
data
);
ff_layout_encode_iostats
(
flo
,
xdr
,
args
);
ff_layout_encode_iostats
_array
(
flo
,
xdr
,
args
);
*
start
=
cpu_to_be32
((
xdr
->
p
-
start
-
1
)
*
4
);
dprintk
(
"%s: Return
\n
"
,
__func__
);
...
...
@@ -2191,21 +2191,18 @@ ff_layout_encode_io_latency(struct xdr_stream *xdr,
}
static
void
ff_layout_encode_
layoutstats
(
struct
xdr_stream
*
xdr
,
struct
nfs42_layoutstat_args
*
args
,
struct
nfs42_layoutstat_devinfo
*
devinfo
)
ff_layout_encode_
ff_layoutupdate
(
struct
xdr_stream
*
xdr
,
const
struct
nfs42_layoutstat_devinfo
*
devinfo
,
struct
nfs4_ff_layout_mirror
*
mirror
)
{
struct
nfs4_ff_layout_mirror
*
mirror
=
devinfo
->
layout_private
;
struct
nfs4_pnfs_ds_addr
*
da
;
struct
nfs4_pnfs_ds
*
ds
=
mirror
->
mirror_ds
->
ds
;
struct
nfs_fh
*
fh
=
&
mirror
->
fh_versions
[
0
];
__be32
*
p
,
*
start
;
__be32
*
p
;
da
=
list_first_entry
(
&
ds
->
ds_addrs
,
struct
nfs4_pnfs_ds_addr
,
da_node
);
dprintk
(
"%s: DS %s: encoding address %s
\n
"
,
__func__
,
ds
->
ds_remotestr
,
da
->
da_remotestr
);
/* layoutupdate length */
start
=
xdr_reserve_space
(
xdr
,
4
);
/* netaddr4 */
ff_layout_encode_netaddr
(
xdr
,
da
);
/* nfs_fh4 */
...
...
@@ -2222,10 +2219,36 @@ ff_layout_encode_layoutstats(struct xdr_stream *xdr,
/* bool */
p
=
xdr_reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
false
);
}
static
void
ff_layout_encode_layoutstats
(
struct
xdr_stream
*
xdr
,
const
void
*
args
,
const
struct
nfs4_xdr_opaque_data
*
opaque
)
{
struct
nfs42_layoutstat_devinfo
*
devinfo
=
container_of
(
opaque
,
struct
nfs42_layoutstat_devinfo
,
ld_private
);
__be32
*
start
;
/* layoutupdate length */
start
=
xdr_reserve_space
(
xdr
,
4
);
ff_layout_encode_ff_layoutupdate
(
xdr
,
devinfo
,
opaque
->
data
);
*
start
=
cpu_to_be32
((
xdr
->
p
-
start
-
1
)
*
4
);
}
static
void
ff_layout_free_layoutstats
(
struct
nfs4_xdr_opaque_data
*
opaque
)
{
struct
nfs4_ff_layout_mirror
*
mirror
=
opaque
->
data
;
ff_layout_put_mirror
(
mirror
);
}
static
const
struct
nfs4_xdr_opaque_ops
layoutstat_ops
=
{
.
encode
=
ff_layout_encode_layoutstats
,
.
free
=
ff_layout_free_layoutstats
,
};
static
int
ff_layout_mirror_prepare_stats
(
struct
pnfs_layout_hdr
*
lo
,
struct
nfs42_layoutstat_devinfo
*
devinfo
,
...
...
@@ -2257,8 +2280,8 @@ ff_layout_mirror_prepare_stats(struct pnfs_layout_hdr *lo,
devinfo
->
write_bytes
=
mirror
->
write_stat
.
io_stat
.
bytes_completed
;
spin_unlock
(
&
mirror
->
lock
);
devinfo
->
layout_type
=
LAYOUT_FLEX_FILES
;
devinfo
->
l
ayoutstats_encode
=
ff_layout_encode_layoutstat
s
;
devinfo
->
l
ayout_private
=
mirror
;
devinfo
->
l
d_private
.
ops
=
&
layoutstat_op
s
;
devinfo
->
l
d_private
.
data
=
mirror
;
devinfo
++
;
i
++
;
...
...
@@ -2291,19 +2314,6 @@ ff_layout_prepare_layoutstats(struct nfs42_layoutstat_args *args)
return
0
;
}
static
void
ff_layout_cleanup_layoutstats
(
struct
nfs42_layoutstat_data
*
data
)
{
struct
nfs4_ff_layout_mirror
*
mirror
;
int
i
;
for
(
i
=
0
;
i
<
data
->
args
.
num_dev
;
i
++
)
{
mirror
=
data
->
args
.
devinfo
[
i
].
layout_private
;
data
->
args
.
devinfo
[
i
].
layout_private
=
NULL
;
ff_layout_put_mirror
(
mirror
);
}
}
static
struct
pnfs_layoutdriver_type
flexfilelayout_type
=
{
.
id
=
LAYOUT_FLEX_FILES
,
.
name
=
"LAYOUT_FLEX_FILES"
,
...
...
@@ -2328,7 +2338,6 @@ static struct pnfs_layoutdriver_type flexfilelayout_type = {
.
prepare_layoutreturn
=
ff_layout_prepare_layoutreturn
,
.
sync
=
pnfs_nfs_generic_sync
,
.
prepare_layoutstats
=
ff_layout_prepare_layoutstats
,
.
cleanup_layoutstats
=
ff_layout_cleanup_layoutstats
,
};
static
int
__init
nfs4flexfilelayout_init
(
void
)
...
...
fs/nfs/nfs42proc.c
浏览文件 @
422c93c8
...
...
@@ -397,10 +397,13 @@ static void
nfs42_layoutstat_release
(
void
*
calldata
)
{
struct
nfs42_layoutstat_data
*
data
=
calldata
;
struct
nfs_server
*
nfss
=
NFS_SERVER
(
data
->
args
.
inode
);
struct
nfs42_layoutstat_devinfo
*
devinfo
=
data
->
args
.
devinfo
;
int
i
;
if
(
nfss
->
pnfs_curr_ld
->
cleanup_layoutstats
)
nfss
->
pnfs_curr_ld
->
cleanup_layoutstats
(
data
);
for
(
i
=
0
;
i
<
data
->
args
.
num_dev
;
i
++
)
{
if
(
devinfo
[
i
].
ld_private
.
ops
&&
devinfo
[
i
].
ld_private
.
ops
->
free
)
devinfo
[
i
].
ld_private
.
ops
->
free
(
&
devinfo
[
i
].
ld_private
);
}
pnfs_put_layout_hdr
(
NFS_I
(
data
->
args
.
inode
)
->
layout
);
smp_mb__before_atomic
();
...
...
fs/nfs/nfs42xdr.c
浏览文件 @
422c93c8
...
...
@@ -181,8 +181,9 @@ static void encode_layoutstats(struct xdr_stream *xdr,
NFS4_DEVICEID4_SIZE
);
/* Encode layoutupdate4 */
*
p
++
=
cpu_to_be32
(
devinfo
->
layout_type
);
if
(
devinfo
->
layoutstats_encode
!=
NULL
)
devinfo
->
layoutstats_encode
(
xdr
,
args
,
devinfo
);
if
(
devinfo
->
ld_private
.
ops
)
devinfo
->
ld_private
.
ops
->
encode
(
xdr
,
args
,
&
devinfo
->
ld_private
);
else
encode_uint32
(
xdr
,
0
);
}
...
...
fs/nfs/pnfs.h
浏览文件 @
422c93c8
...
...
@@ -182,7 +182,6 @@ struct pnfs_layoutdriver_type {
struct
xdr_stream
*
xdr
,
const
struct
nfs4_layoutcommit_args
*
args
);
int
(
*
prepare_layoutstats
)
(
struct
nfs42_layoutstat_args
*
args
);
void
(
*
cleanup_layoutstats
)
(
struct
nfs42_layoutstat_data
*
data
);
};
struct
pnfs_layout_hdr
{
...
...
include/linux/nfs_xdr.h
浏览文件 @
422c93c8
...
...
@@ -357,8 +357,7 @@ struct nfs42_layoutstat_devinfo {
__u64
write_count
;
__u64
write_bytes
;
__u32
layout_type
;
layoutstats_encode_t
layoutstats_encode
;
void
*
layout_private
;
struct
nfs4_xdr_opaque_data
ld_private
;
};
struct
nfs42_layoutstat_args
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录