Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
d463a43d
cloud-kernel
项目概览
openanolis
/
cloud-kernel
接近 2 年 前同步成功
通知
169
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
d463a43d
编写于
3月 31, 2016
作者:
Y
Yan, Zheng
提交者:
Ilya Dryomov
5月 26, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ceph: CEPH_FEATURE_MDSENC support
Signed-off-by:
N
Yan, Zheng
<
zyan@redhat.com
>
上级
235a0982
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
36 addition
and
12 deletion
+36
-12
fs/ceph/mdsmap.c
fs/ceph/mdsmap.c
+34
-9
fs/ceph/super.c
fs/ceph/super.c
+2
-3
未找到文件。
fs/ceph/mdsmap.c
浏览文件 @
d463a43d
...
@@ -54,16 +54,21 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
...
@@ -54,16 +54,21 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
const
void
*
start
=
*
p
;
const
void
*
start
=
*
p
;
int
i
,
j
,
n
;
int
i
,
j
,
n
;
int
err
=
-
EINVAL
;
int
err
=
-
EINVAL
;
u
16
version
;
u
8
mdsmap_v
,
mdsmap_cv
;
m
=
kzalloc
(
sizeof
(
*
m
),
GFP_NOFS
);
m
=
kzalloc
(
sizeof
(
*
m
),
GFP_NOFS
);
if
(
m
==
NULL
)
if
(
m
==
NULL
)
return
ERR_PTR
(
-
ENOMEM
);
return
ERR_PTR
(
-
ENOMEM
);
ceph_decode_16_safe
(
p
,
end
,
version
,
bad
);
ceph_decode_need
(
p
,
end
,
1
+
1
,
bad
);
if
(
version
>
3
)
{
mdsmap_v
=
ceph_decode_8
(
p
);
pr_warn
(
"got mdsmap version %d > 3, failing"
,
version
);
mdsmap_cv
=
ceph_decode_8
(
p
);
goto
bad
;
if
(
mdsmap_v
>=
4
)
{
u32
mdsmap_len
;
ceph_decode_32_safe
(
p
,
end
,
mdsmap_len
,
bad
);
if
(
end
<
*
p
+
mdsmap_len
)
goto
bad
;
end
=
*
p
+
mdsmap_len
;
}
}
ceph_decode_need
(
p
,
end
,
8
*
sizeof
(
u32
)
+
sizeof
(
u64
),
bad
);
ceph_decode_need
(
p
,
end
,
8
*
sizeof
(
u32
)
+
sizeof
(
u64
),
bad
);
...
@@ -87,16 +92,29 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
...
@@ -87,16 +92,29 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
u32
namelen
;
u32
namelen
;
s32
mds
,
inc
,
state
;
s32
mds
,
inc
,
state
;
u64
state_seq
;
u64
state_seq
;
u8
infoversion
;
u8
info_v
;
void
*
info_end
=
NULL
;
struct
ceph_entity_addr
addr
;
struct
ceph_entity_addr
addr
;
u32
num_export_targets
;
u32
num_export_targets
;
void
*
pexport_targets
=
NULL
;
void
*
pexport_targets
=
NULL
;
struct
ceph_timespec
laggy_since
;
struct
ceph_timespec
laggy_since
;
struct
ceph_mds_info
*
info
;
struct
ceph_mds_info
*
info
;
ceph_decode_need
(
p
,
end
,
sizeof
(
u64
)
*
2
+
1
+
sizeof
(
u32
)
,
bad
);
ceph_decode_need
(
p
,
end
,
sizeof
(
u64
)
+
1
,
bad
);
global_id
=
ceph_decode_64
(
p
);
global_id
=
ceph_decode_64
(
p
);
infoversion
=
ceph_decode_8
(
p
);
info_v
=
ceph_decode_8
(
p
);
if
(
info_v
>=
4
)
{
u32
info_len
;
u8
info_cv
;
ceph_decode_need
(
p
,
end
,
1
+
sizeof
(
u32
),
bad
);
info_cv
=
ceph_decode_8
(
p
);
info_len
=
ceph_decode_32
(
p
);
info_end
=
*
p
+
info_len
;
if
(
info_end
>
end
)
goto
bad
;
}
ceph_decode_need
(
p
,
end
,
sizeof
(
u64
)
+
sizeof
(
u32
),
bad
);
*
p
+=
sizeof
(
u64
);
*
p
+=
sizeof
(
u64
);
namelen
=
ceph_decode_32
(
p
);
/* skip mds name */
namelen
=
ceph_decode_32
(
p
);
/* skip mds name */
*
p
+=
namelen
;
*
p
+=
namelen
;
...
@@ -115,7 +133,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
...
@@ -115,7 +133,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
*
p
+=
sizeof
(
u32
);
*
p
+=
sizeof
(
u32
);
ceph_decode_32_safe
(
p
,
end
,
namelen
,
bad
);
ceph_decode_32_safe
(
p
,
end
,
namelen
,
bad
);
*
p
+=
namelen
;
*
p
+=
namelen
;
if
(
info
version
>=
2
)
{
if
(
info
_v
>=
2
)
{
ceph_decode_32_safe
(
p
,
end
,
num_export_targets
,
bad
);
ceph_decode_32_safe
(
p
,
end
,
num_export_targets
,
bad
);
pexport_targets
=
*
p
;
pexport_targets
=
*
p
;
*
p
+=
num_export_targets
*
sizeof
(
u32
);
*
p
+=
num_export_targets
*
sizeof
(
u32
);
...
@@ -123,6 +141,12 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
...
@@ -123,6 +141,12 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
num_export_targets
=
0
;
num_export_targets
=
0
;
}
}
if
(
info_end
&&
*
p
!=
info_end
)
{
if
(
*
p
>
info_end
)
goto
bad
;
*
p
=
info_end
;
}
dout
(
"mdsmap_decode %d/%d %lld mds%d.%d %s %s
\n
"
,
dout
(
"mdsmap_decode %d/%d %lld mds%d.%d %s %s
\n
"
,
i
+
1
,
n
,
global_id
,
mds
,
inc
,
i
+
1
,
n
,
global_id
,
mds
,
inc
,
ceph_pr_addr
(
&
addr
.
in_addr
),
ceph_pr_addr
(
&
addr
.
in_addr
),
...
@@ -163,6 +187,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
...
@@ -163,6 +187,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
m
->
m_cas_pg_pool
=
ceph_decode_64
(
p
);
m
->
m_cas_pg_pool
=
ceph_decode_64
(
p
);
/* ok, we don't care about the rest. */
/* ok, we don't care about the rest. */
*
p
=
end
;
dout
(
"mdsmap_decode success epoch %u
\n
"
,
m
->
m_epoch
);
dout
(
"mdsmap_decode success epoch %u
\n
"
,
m
->
m_epoch
);
return
m
;
return
m
;
...
...
fs/ceph/super.c
浏览文件 @
d463a43d
...
@@ -519,9 +519,8 @@ static struct ceph_fs_client *create_fs_client(struct ceph_mount_options *fsopt,
...
@@ -519,9 +519,8 @@ static struct ceph_fs_client *create_fs_client(struct ceph_mount_options *fsopt,
{
{
struct
ceph_fs_client
*
fsc
;
struct
ceph_fs_client
*
fsc
;
const
u64
supported_features
=
const
u64
supported_features
=
CEPH_FEATURE_FLOCK
|
CEPH_FEATURE_FLOCK
|
CEPH_FEATURE_DIRLAYOUTHASH
|
CEPH_FEATURE_DIRLAYOUTHASH
|
CEPH_FEATURE_MDSENC
|
CEPH_FEATURE_MDS_INLINE_DATA
;
CEPH_FEATURE_MDS_INLINE_DATA
;
const
u64
required_features
=
0
;
const
u64
required_features
=
0
;
int
page_count
;
int
page_count
;
size_t
size
;
size_t
size
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录