git: sys/dev/disk/dm: Don't let targets implement deps [2/2]
Tomohiro Kusumi
tkusumi at crater.dragonflybsd.org
Sun Oct 25 07:57:22 PDT 2015
commit d471f1f91f48d72fc2e9bbb8d461753054d745d6
Author: Tomohiro Kusumi <kusumi.tomohiro at gmail.com>
Date: Sat Oct 24 19:38:56 2015 +0900
sys/dev/disk/dm: Don't let targets implement deps [2/2]
This commit gets rid of target's deps handler by introducing
a new structure struct dm_mapping which embeds struct dm_pdev*
and a tailq structure for the next entry whose tailq head is
embedded within struct dm_table_entry.
=====(A) before this commit
table
| [dm core]
-------------------------------------------------------
| pdev pdev pdev [dm targets]
v ^ ^ ^
target----/---------/---------/
(void*)
=====(B) this commit
table---->mapping-->mapping-->mapping-->...
| | | |
| v v v [dm core]
-------------------------------------------------------
| pdev pdev pdev [dm targets]
v ^ ^ ^
target----/---------/---------/
(void*)
Each target's init() now calls dm_table_add_deps(table, pdev)
to add a new dm_mapping (that points to pdev) to table. This
allows dm table structure to refer to underlying devices that
the target is dependent on (by following this tailq) without
using target specific deps handler.
dmsetup(8)'s deps subcommand is now handled by a newly added
dm core function dm_table_deps() that is common among targets.
This greatly reduces complexity and size of targets plus make
code less error prone. Targets only need to call dm_table_add
_deps() as mentioned above whenever they allocate underlying
device(s) via dm_pdev_insert().
Summary of changes:
sys/dev/disk/dm/dm.h | 13 ++++-
sys/dev/disk/dm/dm_ioctl.c | 34 +++++++++++-
sys/dev/disk/dm/dm_pdev.c | 18 +++++++
sys/dev/disk/dm/dm_table.c | 54 +++++++++++++++++++
sys/dev/disk/dm/dm_target_error.c | 8 ---
sys/dev/disk/dm/dm_target_zero.c | 7 ---
sys/dev/disk/dm/targets/crypt/dm_target_crypt.c | 25 +--------
sys/dev/disk/dm/targets/delay/dm_target_delay.c | 39 ++------------
sys/dev/disk/dm/targets/linear/dm_target_linear.c | 24 +--------
.../disk/dm/targets/snapshot/dm_target_snapshot.c | 61 ++--------------------
.../disk/dm/targets/striped/dm_target_striped.c | 28 +---------
11 files changed, 130 insertions(+), 181 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d471f1f91f48d72fc2e9bbb8d461753054d745d6
--
DragonFly BSD source repository
More information about the Commits
mailing list