Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
0ea611a3
C
clone-Linux
项目概览
gsplhtlxg
/
clone-Linux
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
clone-Linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0ea611a3
编写于
4月 07, 2015
作者:
Y
Yan, Zheng
提交者:
Ilya Dryomov
4月 22, 2015
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ceph: rename snapshot support
Signed-off-by:
N
Yan, Zheng
<
zyan@redhat.com
>
上级
c0bd50e2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
11 addition
and
4 deletion
+11
-4
fs/ceph/dir.c
fs/ceph/dir.c
+9
-4
fs/ceph/strings.c
fs/ceph/strings.c
+1
-0
include/linux/ceph/ceph_fs.h
include/linux/ceph/ceph_fs.h
+1
-0
未找到文件。
fs/ceph/dir.c
浏览文件 @
0ea611a3
...
...
@@ -947,16 +947,20 @@ static int ceph_rename(struct inode *old_dir, struct dentry *old_dentry,
struct
ceph_fs_client
*
fsc
=
ceph_sb_to_client
(
old_dir
->
i_sb
);
struct
ceph_mds_client
*
mdsc
=
fsc
->
mdsc
;
struct
ceph_mds_request
*
req
;
int
op
=
CEPH_MDS_OP_RENAME
;
int
err
;
if
(
ceph_snap
(
old_dir
)
!=
ceph_snap
(
new_dir
))
return
-
EXDEV
;
if
(
ceph_snap
(
old_dir
)
!=
CEPH_NOSNAP
||
ceph_snap
(
new_dir
)
!=
CEPH_NOSNAP
)
return
-
EROFS
;
if
(
ceph_snap
(
old_dir
)
!=
CEPH_NOSNAP
)
{
if
(
old_dir
==
new_dir
&&
ceph_snap
(
old_dir
)
==
CEPH_SNAPDIR
)
op
=
CEPH_MDS_OP_RENAMESNAP
;
else
return
-
EROFS
;
}
dout
(
"rename dir %p dentry %p to dir %p dentry %p
\n
"
,
old_dir
,
old_dentry
,
new_dir
,
new_dentry
);
req
=
ceph_mdsc_create_request
(
mdsc
,
CEPH_MDS_OP_RENAME
,
USE_AUTH_MDS
);
req
=
ceph_mdsc_create_request
(
mdsc
,
op
,
USE_AUTH_MDS
);
if
(
IS_ERR
(
req
))
return
PTR_ERR
(
req
);
ihold
(
old_dir
);
...
...
@@ -1387,6 +1391,7 @@ const struct inode_operations ceph_snapdir_iops = {
.
getattr
=
ceph_getattr
,
.
mkdir
=
ceph_mkdir
,
.
rmdir
=
ceph_unlink
,
.
rename
=
ceph_rename
,
};
const
struct
dentry_operations
ceph_dentry_ops
=
{
...
...
fs/ceph/strings.c
浏览文件 @
0ea611a3
...
...
@@ -75,6 +75,7 @@ const char *ceph_mds_op_name(int op)
case
CEPH_MDS_OP_LSSNAP
:
return
"lssnap"
;
case
CEPH_MDS_OP_MKSNAP
:
return
"mksnap"
;
case
CEPH_MDS_OP_RMSNAP
:
return
"rmsnap"
;
case
CEPH_MDS_OP_RENAMESNAP
:
return
"renamesnap"
;
case
CEPH_MDS_OP_SETFILELOCK
:
return
"setfilelock"
;
case
CEPH_MDS_OP_GETFILELOCK
:
return
"getfilelock"
;
}
...
...
include/linux/ceph/ceph_fs.h
浏览文件 @
0ea611a3
...
...
@@ -323,6 +323,7 @@ enum {
CEPH_MDS_OP_MKSNAP
=
0x01400
,
CEPH_MDS_OP_RMSNAP
=
0x01401
,
CEPH_MDS_OP_LSSNAP
=
0x00402
,
CEPH_MDS_OP_RENAMESNAP
=
0x01403
,
};
extern
const
char
*
ceph_mds_op_name
(
int
op
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录