Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
ee668506
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看板
提交
ee668506
编写于
2月 01, 2013
作者:
K
Kent Overstreet
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
bcache: Use bd_link_disk_holder()
Signed-off-by:
N
Kent Overstreet
<
koverstreet@google.com
>
上级
86b26b82
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
35 addition
and
17 deletion
+35
-17
drivers/md/bcache/super.c
drivers/md/bcache/super.c
+35
-17
未找到文件。
drivers/md/bcache/super.c
浏览文件 @
ee668506
...
...
@@ -661,6 +661,35 @@ void bcache_device_stop(struct bcache_device *d)
closure_queue
(
&
d
->
cl
);
}
static
void
bcache_device_unlink
(
struct
bcache_device
*
d
)
{
unsigned
i
;
struct
cache
*
ca
;
sysfs_remove_link
(
&
d
->
c
->
kobj
,
d
->
name
);
sysfs_remove_link
(
&
d
->
kobj
,
"cache"
);
for_each_cache
(
ca
,
d
->
c
,
i
)
bd_unlink_disk_holder
(
ca
->
bdev
,
d
->
disk
);
}
static
void
bcache_device_link
(
struct
bcache_device
*
d
,
struct
cache_set
*
c
,
const
char
*
name
)
{
unsigned
i
;
struct
cache
*
ca
;
for_each_cache
(
ca
,
d
->
c
,
i
)
bd_link_disk_holder
(
ca
->
bdev
,
d
->
disk
);
snprintf
(
d
->
name
,
BCACHEDEVNAME_SIZE
,
"%s%u"
,
name
,
d
->
id
);
WARN
(
sysfs_create_link
(
&
d
->
kobj
,
&
c
->
kobj
,
"cache"
)
||
sysfs_create_link
(
&
c
->
kobj
,
&
d
->
kobj
,
d
->
name
),
"Couldn't create device <-> cache set symlinks"
);
}
static
void
bcache_device_detach
(
struct
bcache_device
*
d
)
{
lockdep_assert_held
(
&
bch_register_lock
);
...
...
@@ -676,6 +705,8 @@ static void bcache_device_detach(struct bcache_device *d)
atomic_set
(
&
d
->
detaching
,
0
);
}
bcache_device_unlink
(
d
);
d
->
c
->
devices
[
d
->
id
]
=
NULL
;
closure_put
(
&
d
->
c
->
caching
);
d
->
c
=
NULL
;
...
...
@@ -693,17 +724,6 @@ static void bcache_device_attach(struct bcache_device *d, struct cache_set *c,
closure_get
(
&
c
->
caching
);
}
static
void
bcache_device_link
(
struct
bcache_device
*
d
,
struct
cache_set
*
c
,
const
char
*
name
)
{
snprintf
(
d
->
name
,
BCACHEDEVNAME_SIZE
,
"%s%u"
,
name
,
d
->
id
);
WARN
(
sysfs_create_link
(
&
d
->
kobj
,
&
c
->
kobj
,
"cache"
)
||
sysfs_create_link
(
&
c
->
kobj
,
&
d
->
kobj
,
d
->
name
),
"Couldn't create device <-> cache set symlinks"
);
}
static
void
bcache_device_free
(
struct
bcache_device
*
d
)
{
lockdep_assert_held
(
&
bch_register_lock
);
...
...
@@ -804,6 +824,7 @@ void bch_cached_dev_run(struct cached_dev *dc)
}
add_disk
(
d
->
disk
);
bd_link_disk_holder
(
dc
->
bdev
,
dc
->
disk
.
disk
);
#if 0
char *env[] = { "SYMLINK=label" , NULL };
kobject_uevent_env(&disk_to_dev(d->disk)->kobj, KOBJ_CHANGE, env);
...
...
@@ -823,9 +844,6 @@ static void cached_dev_detach_finish(struct work_struct *w)
BUG_ON
(
!
atomic_read
(
&
dc
->
disk
.
detaching
));
BUG_ON
(
atomic_read
(
&
dc
->
count
));
sysfs_remove_link
(
&
dc
->
disk
.
c
->
kobj
,
dc
->
disk
.
name
);
sysfs_remove_link
(
&
dc
->
disk
.
kobj
,
"cache"
);
mutex_lock
(
&
bch_register_lock
);
memset
(
&
dc
->
sb
.
set_uuid
,
0
,
16
);
...
...
@@ -940,7 +958,6 @@ int bch_cached_dev_attach(struct cached_dev *dc, struct cache_set *c)
}
bcache_device_attach
(
&
dc
->
disk
,
c
,
u
-
c
->
uuids
);
bcache_device_link
(
&
dc
->
disk
,
c
,
"bdev"
);
list_move
(
&
dc
->
list
,
&
c
->
cached_devs
);
calc_cached_dev_sectors
(
c
);
...
...
@@ -958,6 +975,7 @@ int bch_cached_dev_attach(struct cached_dev *dc, struct cache_set *c)
}
bch_cached_dev_run
(
dc
);
bcache_device_link
(
&
dc
->
disk
,
c
,
"bdev"
);
pr_info
(
"Caching %s as %s on set %pU"
,
bdevname
(
dc
->
bdev
,
buf
),
dc
->
disk
.
disk
->
disk_name
,
...
...
@@ -981,6 +999,7 @@ static void cached_dev_free(struct closure *cl)
mutex_lock
(
&
bch_register_lock
);
bd_unlink_disk_holder
(
dc
->
bdev
,
dc
->
disk
.
disk
);
bcache_device_free
(
&
dc
->
disk
);
list_del
(
&
dc
->
list
);
...
...
@@ -1123,8 +1142,7 @@ static void flash_dev_flush(struct closure *cl)
{
struct
bcache_device
*
d
=
container_of
(
cl
,
struct
bcache_device
,
cl
);
sysfs_remove_link
(
&
d
->
c
->
kobj
,
d
->
name
);
sysfs_remove_link
(
&
d
->
kobj
,
"cache"
);
bcache_device_unlink
(
d
);
kobject_del
(
&
d
->
kobj
);
continue_at
(
cl
,
flash_dev_free
,
system_wq
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录