Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openthos
linux
提交
636fb9c8
L
linux
项目概览
openthos
/
linux
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
636fb9c8
编写于
5月 22, 2011
作者:
B
Benny Halevy
提交者:
Boaz Harrosh
5月 29, 2011
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pnfs: alloc and free layout_hdr layoutdriver methods
[gfp_flags] Signed-off-by:
N
Benny Halevy
<
bhalevy@panasas.com
>
上级
b6c05f16
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
3 deletion
+22
-3
fs/nfs/pnfs.c
fs/nfs/pnfs.c
+18
-3
fs/nfs/pnfs.h
fs/nfs/pnfs.h
+4
-0
未找到文件。
fs/nfs/pnfs.c
浏览文件 @
636fb9c8
...
...
@@ -177,13 +177,28 @@ get_layout_hdr(struct pnfs_layout_hdr *lo)
atomic_inc
(
&
lo
->
plh_refcount
);
}
static
struct
pnfs_layout_hdr
*
pnfs_alloc_layout_hdr
(
struct
inode
*
ino
,
gfp_t
gfp_flags
)
{
struct
pnfs_layoutdriver_type
*
ld
=
NFS_SERVER
(
ino
)
->
pnfs_curr_ld
;
return
ld
->
alloc_layout_hdr
?
ld
->
alloc_layout_hdr
(
ino
,
gfp_flags
)
:
kzalloc
(
sizeof
(
struct
pnfs_layout_hdr
),
gfp_flags
);
}
static
void
pnfs_free_layout_hdr
(
struct
pnfs_layout_hdr
*
lo
)
{
struct
pnfs_layoutdriver_type
*
ld
=
NFS_SERVER
(
lo
->
plh_inode
)
->
pnfs_curr_ld
;
return
ld
->
alloc_layout_hdr
?
ld
->
free_layout_hdr
(
lo
)
:
kfree
(
lo
);
}
static
void
destroy_layout_hdr
(
struct
pnfs_layout_hdr
*
lo
)
{
dprintk
(
"%s: freeing layout cache %p
\n
"
,
__func__
,
lo
);
BUG_ON
(
!
list_empty
(
&
lo
->
plh_layouts
));
NFS_I
(
lo
->
plh_inode
)
->
layout
=
NULL
;
kfree
(
lo
);
pnfs_free_layout_hdr
(
lo
);
}
static
void
...
...
@@ -744,7 +759,7 @@ alloc_init_layout_hdr(struct inode *ino, gfp_t gfp_flags)
{
struct
pnfs_layout_hdr
*
lo
;
lo
=
kzalloc
(
sizeof
(
struct
pnfs_layout_hdr
)
,
gfp_flags
);
lo
=
pnfs_alloc_layout_hdr
(
ino
,
gfp_flags
);
if
(
!
lo
)
return
NULL
;
atomic_set
(
&
lo
->
plh_refcount
,
1
);
...
...
@@ -777,7 +792,7 @@ pnfs_find_alloc_layout(struct inode *ino, gfp_t gfp_flags)
if
(
likely
(
nfsi
->
layout
==
NULL
))
/* Won the race? */
nfsi
->
layout
=
new
;
else
kfree
(
new
);
pnfs_free_layout_hdr
(
new
);
return
nfsi
->
layout
;
}
...
...
fs/nfs/pnfs.h
浏览文件 @
636fb9c8
...
...
@@ -73,6 +73,10 @@ struct pnfs_layoutdriver_type {
const
u32
id
;
const
char
*
name
;
struct
module
*
owner
;
struct
pnfs_layout_hdr
*
(
*
alloc_layout_hdr
)
(
struct
inode
*
inode
,
gfp_t
gfp_flags
);
void
(
*
free_layout_hdr
)
(
struct
pnfs_layout_hdr
*
);
struct
pnfs_layout_segment
*
(
*
alloc_lseg
)
(
struct
pnfs_layout_hdr
*
layoutid
,
struct
nfs4_layoutget_res
*
lgr
,
gfp_t
gfp_flags
);
void
(
*
free_lseg
)
(
struct
pnfs_layout_segment
*
lseg
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录