Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
826e0013
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看板
提交
826e0013
编写于
4月 03, 2013
作者:
T
Trond Myklebust
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
NFSv4: Fix CB_RECALL_ANY to only return delegations that are not in use
Signed-off-by:
N
Trond Myklebust
<
Trond.Myklebust@netapp.com
>
上级
b02ba0b6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
9 addition
and
9 deletion
+9
-9
fs/nfs/callback_proc.c
fs/nfs/callback_proc.c
+1
-1
fs/nfs/delegation.c
fs/nfs/delegation.c
+7
-7
fs/nfs/delegation.h
fs/nfs/delegation.h
+1
-1
未找到文件。
fs/nfs/callback_proc.c
浏览文件 @
826e0013
...
@@ -500,7 +500,7 @@ __be32 nfs4_callback_recallany(struct cb_recallanyargs *args, void *dummy,
...
@@ -500,7 +500,7 @@ __be32 nfs4_callback_recallany(struct cb_recallanyargs *args, void *dummy,
&
args
->
craa_type_mask
))
&
args
->
craa_type_mask
))
pnfs_recall_all_layouts
(
cps
->
clp
);
pnfs_recall_all_layouts
(
cps
->
clp
);
if
(
flags
)
if
(
flags
)
nfs_expire_
all
_delegation_types
(
cps
->
clp
,
flags
);
nfs_expire_
unused
_delegation_types
(
cps
->
clp
,
flags
);
out:
out:
dprintk
(
"%s: exit with status = %d
\n
"
,
__func__
,
ntohl
(
status
));
dprintk
(
"%s: exit with status = %d
\n
"
,
__func__
,
ntohl
(
status
));
return
status
;
return
status
;
...
...
fs/nfs/delegation.c
浏览文件 @
826e0013
...
@@ -564,7 +564,7 @@ void nfs_server_return_all_delegations(struct nfs_server *server)
...
@@ -564,7 +564,7 @@ void nfs_server_return_all_delegations(struct nfs_server *server)
}
}
}
}
static
void
nfs_mark_return_
all
_delegation_types
(
struct
nfs_server
*
server
,
static
void
nfs_mark_return_
unused
_delegation_types
(
struct
nfs_server
*
server
,
fmode_t
flags
)
fmode_t
flags
)
{
{
struct
nfs_delegation
*
delegation
;
struct
nfs_delegation
*
delegation
;
...
@@ -573,18 +573,18 @@ static void nfs_mark_return_all_delegation_types(struct nfs_server *server,
...
@@ -573,18 +573,18 @@ static void nfs_mark_return_all_delegation_types(struct nfs_server *server,
if
((
delegation
->
type
==
(
FMODE_READ
|
FMODE_WRITE
))
&&
!
(
flags
&
FMODE_WRITE
))
if
((
delegation
->
type
==
(
FMODE_READ
|
FMODE_WRITE
))
&&
!
(
flags
&
FMODE_WRITE
))
continue
;
continue
;
if
(
delegation
->
type
&
flags
)
if
(
delegation
->
type
&
flags
)
nfs_mark_return_delegation
(
server
,
delegation
);
nfs_mark_return_
if_closed_
delegation
(
server
,
delegation
);
}
}
}
}
static
void
nfs_client_mark_return_
all
_delegation_types
(
struct
nfs_client
*
clp
,
static
void
nfs_client_mark_return_
unused
_delegation_types
(
struct
nfs_client
*
clp
,
fmode_t
flags
)
fmode_t
flags
)
{
{
struct
nfs_server
*
server
;
struct
nfs_server
*
server
;
rcu_read_lock
();
rcu_read_lock
();
list_for_each_entry_rcu
(
server
,
&
clp
->
cl_superblocks
,
client_link
)
list_for_each_entry_rcu
(
server
,
&
clp
->
cl_superblocks
,
client_link
)
nfs_mark_return_
all
_delegation_types
(
server
,
flags
);
nfs_mark_return_
unused
_delegation_types
(
server
,
flags
);
rcu_read_unlock
();
rcu_read_unlock
();
}
}
...
@@ -601,14 +601,14 @@ void nfs_remove_bad_delegation(struct inode *inode)
...
@@ -601,14 +601,14 @@ void nfs_remove_bad_delegation(struct inode *inode)
EXPORT_SYMBOL_GPL
(
nfs_remove_bad_delegation
);
EXPORT_SYMBOL_GPL
(
nfs_remove_bad_delegation
);
/**
/**
* nfs_expire_
all
_delegation_types
* nfs_expire_
unused
_delegation_types
* @clp: client to process
* @clp: client to process
* @flags: delegation types to expire
* @flags: delegation types to expire
*
*
*/
*/
void
nfs_expire_
all
_delegation_types
(
struct
nfs_client
*
clp
,
fmode_t
flags
)
void
nfs_expire_
unused
_delegation_types
(
struct
nfs_client
*
clp
,
fmode_t
flags
)
{
{
nfs_client_mark_return_
all
_delegation_types
(
clp
,
flags
);
nfs_client_mark_return_
unused
_delegation_types
(
clp
,
flags
);
nfs_delegation_run_state_manager
(
clp
);
nfs_delegation_run_state_manager
(
clp
);
}
}
...
...
fs/nfs/delegation.h
浏览文件 @
826e0013
...
@@ -42,7 +42,7 @@ void nfs_inode_return_delegation_noreclaim(struct inode *inode);
...
@@ -42,7 +42,7 @@ void nfs_inode_return_delegation_noreclaim(struct inode *inode);
struct
inode
*
nfs_delegation_find_inode
(
struct
nfs_client
*
clp
,
const
struct
nfs_fh
*
fhandle
);
struct
inode
*
nfs_delegation_find_inode
(
struct
nfs_client
*
clp
,
const
struct
nfs_fh
*
fhandle
);
void
nfs_server_return_all_delegations
(
struct
nfs_server
*
);
void
nfs_server_return_all_delegations
(
struct
nfs_server
*
);
void
nfs_expire_all_delegations
(
struct
nfs_client
*
clp
);
void
nfs_expire_all_delegations
(
struct
nfs_client
*
clp
);
void
nfs_expire_
all
_delegation_types
(
struct
nfs_client
*
clp
,
fmode_t
flags
);
void
nfs_expire_
unused
_delegation_types
(
struct
nfs_client
*
clp
,
fmode_t
flags
);
void
nfs_expire_unreferenced_delegations
(
struct
nfs_client
*
clp
);
void
nfs_expire_unreferenced_delegations
(
struct
nfs_client
*
clp
);
int
nfs_client_return_marked_delegations
(
struct
nfs_client
*
clp
);
int
nfs_client_return_marked_delegations
(
struct
nfs_client
*
clp
);
int
nfs_delegations_present
(
struct
nfs_client
*
clp
);
int
nfs_delegations_present
(
struct
nfs_client
*
clp
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录