Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
3f384954
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
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看板
提交
3f384954
编写于
4月 21, 2016
作者:
Y
Yan, Zheng
提交者:
Ilya Dryomov
5月 26, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ceph: report mount root in session metadata
Signed-off-by:
N
Yan, Zheng
<
zyan@redhat.com
>
上级
aeda081c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
23 addition
and
15 deletion
+23
-15
fs/ceph/mds_client.c
fs/ceph/mds_client.c
+3
-1
fs/ceph/super.c
fs/ceph/super.c
+19
-14
fs/ceph/super.h
fs/ceph/super.h
+1
-0
未找到文件。
fs/ceph/mds_client.c
浏览文件 @
3f384954
...
...
@@ -839,12 +839,14 @@ static struct ceph_msg *create_session_open_msg(struct ceph_mds_client *mdsc, u6
int
metadata_bytes
=
0
;
int
metadata_key_count
=
0
;
struct
ceph_options
*
opt
=
mdsc
->
fsc
->
client
->
options
;
struct
ceph_mount_options
*
fsopt
=
mdsc
->
fsc
->
mount_options
;
void
*
p
;
const
char
*
metadata
[][
2
]
=
{
{
"hostname"
,
utsname
()
->
nodename
},
{
"kernel_version"
,
utsname
()
->
release
},
{
"entity_id"
,
opt
->
name
?
opt
->
name
:
""
},
{
"entity_id"
,
opt
->
name
?
:
""
},
{
"root"
,
fsopt
->
server_path
?
:
"/"
},
{
NULL
,
NULL
}
};
...
...
fs/ceph/super.c
浏览文件 @
3f384954
...
...
@@ -302,6 +302,7 @@ static void destroy_mount_options(struct ceph_mount_options *args)
{
dout
(
"destroy_mount_options %p
\n
"
,
args
);
kfree
(
args
->
snapdir_name
);
kfree
(
args
->
server_path
);
kfree
(
args
);
}
...
...
@@ -333,14 +334,17 @@ static int compare_mount_options(struct ceph_mount_options *new_fsopt,
if
(
ret
)
return
ret
;
ret
=
strcmp_null
(
fsopt1
->
server_path
,
fsopt2
->
server_path
);
if
(
ret
)
return
ret
;
return
ceph_compare_options
(
new_opt
,
fsc
->
client
);
}
static
int
parse_mount_options
(
struct
ceph_mount_options
**
pfsopt
,
struct
ceph_options
**
popt
,
int
flags
,
char
*
options
,
const
char
*
dev_name
,
const
char
**
path
)
const
char
*
dev_name
)
{
struct
ceph_mount_options
*
fsopt
;
const
char
*
dev_name_end
;
...
...
@@ -386,12 +390,13 @@ static int parse_mount_options(struct ceph_mount_options **pfsopt,
*/
dev_name_end
=
strchr
(
dev_name
,
'/'
);
if
(
dev_name_end
)
{
/* skip over leading '/' for path */
*
path
=
dev_name_end
+
1
;
fsopt
->
server_path
=
kstrdup
(
dev_name_end
,
GFP_KERNEL
);
if
(
!
fsopt
->
server_path
)
{
err
=
-
ENOMEM
;
goto
out
;
}
}
else
{
/* path is empty */
dev_name_end
=
dev_name
+
strlen
(
dev_name
);
*
path
=
dev_name_end
;
}
err
=
-
EINVAL
;
dev_name_end
--
;
/* back up to ':' separator */
...
...
@@ -401,7 +406,8 @@ static int parse_mount_options(struct ceph_mount_options **pfsopt,
goto
out
;
}
dout
(
"device name '%.*s'
\n
"
,
(
int
)(
dev_name_end
-
dev_name
),
dev_name
);
dout
(
"server path '%s'
\n
"
,
*
path
);
if
(
fsopt
->
server_path
)
dout
(
"server path '%s'
\n
"
,
fsopt
->
server_path
);
*
popt
=
ceph_parse_options
(
options
,
dev_name
,
dev_name_end
,
parse_fsopt_token
,
(
void
*
)
fsopt
);
...
...
@@ -793,8 +799,7 @@ static struct dentry *open_root_dentry(struct ceph_fs_client *fsc,
/*
* mount: join the ceph cluster, and open root directory.
*/
static
struct
dentry
*
ceph_real_mount
(
struct
ceph_fs_client
*
fsc
,
const
char
*
path
)
static
struct
dentry
*
ceph_real_mount
(
struct
ceph_fs_client
*
fsc
)
{
int
err
;
unsigned
long
started
=
jiffies
;
/* note the start time */
...
...
@@ -823,11 +828,12 @@ static struct dentry *ceph_real_mount(struct ceph_fs_client *fsc,
goto
fail
;
}
if
(
path
[
0
]
==
0
)
{
if
(
!
fsc
->
mount_options
->
server_path
)
{
root
=
fsc
->
sb
->
s_root
;
dget
(
root
);
}
else
{
dout
(
"mount opening base mountpoint
\n
"
);
const
char
*
path
=
fsc
->
mount_options
->
server_path
+
1
;
dout
(
"mount opening path %s
\n
"
,
path
);
root
=
open_root_dentry
(
fsc
,
path
,
started
);
if
(
IS_ERR
(
root
))
{
err
=
PTR_ERR
(
root
);
...
...
@@ -943,7 +949,6 @@ static struct dentry *ceph_mount(struct file_system_type *fs_type,
struct
dentry
*
res
;
int
err
;
int
(
*
compare_super
)(
struct
super_block
*
,
void
*
)
=
ceph_compare_super
;
const
char
*
path
=
NULL
;
struct
ceph_mount_options
*
fsopt
=
NULL
;
struct
ceph_options
*
opt
=
NULL
;
...
...
@@ -952,7 +957,7 @@ static struct dentry *ceph_mount(struct file_system_type *fs_type,
#ifdef CONFIG_CEPH_FS_POSIX_ACL
flags
|=
MS_POSIXACL
;
#endif
err
=
parse_mount_options
(
&
fsopt
,
&
opt
,
flags
,
data
,
dev_name
,
&
path
);
err
=
parse_mount_options
(
&
fsopt
,
&
opt
,
flags
,
data
,
dev_name
);
if
(
err
<
0
)
{
res
=
ERR_PTR
(
err
);
goto
out_final
;
...
...
@@ -995,7 +1000,7 @@ static struct dentry *ceph_mount(struct file_system_type *fs_type,
}
}
res
=
ceph_real_mount
(
fsc
,
path
);
res
=
ceph_real_mount
(
fsc
);
if
(
IS_ERR
(
res
))
goto
out_splat
;
dout
(
"root %p inode %p ino %llx.%llx
\n
"
,
res
,
...
...
fs/ceph/super.h
浏览文件 @
3f384954
...
...
@@ -70,6 +70,7 @@ struct ceph_mount_options {
*/
char
*
snapdir_name
;
/* default ".snap" */
char
*
server_path
;
/* default "/" */
};
struct
ceph_fs_client
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录