diff options
| author | haad <haad@NetBSD.org> | 2008-12-21 00:59:39 +0000 |
|---|---|---|
| committer | haad <haad@NetBSD.org> | 2008-12-21 00:59:39 +0000 |
| commit | cca8fb31f911820f397b9d96a25bdf445dcaa28b (patch) | |
| tree | 2a241827f48fd6b8d163de6d5f6d4c7bd4388c30 /sys/dev/dm/dm_target.c | |
| parent | 38805eb14c9a24414515ec80d28fc16ff67c9c41 (diff) | |
Add support for loading dm targets as separate modules. All targets except
linear can be loaded as module. Module is not loaded when there is target
with similar name already. Zero and error targets aresimple examples how
can be all future targets written to support dynamic loading. Target can't
be unloaded until there is at least one user.
Diffstat (limited to 'sys/dev/dm/dm_target.c')
| -rw-r--r-- | sys/dev/dm/dm_target.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/sys/dev/dm/dm_target.c b/sys/dev/dm/dm_target.c index 01911e258cd..8b302ab1829 100644 --- a/sys/dev/dm/dm_target.c +++ b/sys/dev/dm/dm_target.c @@ -1,4 +1,4 @@ -/* $NetBSD: dm_target.c,v 1.3 2008/12/19 16:30:41 haad Exp $ */ +/* $NetBSD: dm_target.c,v 1.4 2008/12/21 00:59:39 haad Exp $ */ /* * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -37,7 +37,6 @@ #include "netbsd-dm.h" #include "dm.h" -static dm_target_t* dm_target_alloc(const char *); static dm_target_t* dm_target_lookup_name(const char *); TAILQ_HEAD(dm_target_head, dm_target); @@ -189,6 +188,8 @@ dm_target_destroy(void) } mutex_exit(&dm_target_mutex); + mutex_destroy(&dm_target_mutex); + return 0; } @@ -243,7 +244,7 @@ dm_target_prop_list(void) int dm_target_init(void) { - dm_target_t *dmt,*dmt1,*dmt2,*dmt3,*dmt4,*dmt5,*dmt6; + dm_target_t *dmt,*dmt3,*dmt4; int r; r = 0; @@ -251,12 +252,8 @@ dm_target_init(void) mutex_init(&dm_target_mutex, MUTEX_DEFAULT, IPL_NONE); dmt = dm_target_alloc("linear"); - dmt1 = dm_target_alloc("zero"); - dmt2 = dm_target_alloc("error"); dmt3 = dm_target_alloc("striped"); dmt4 = dm_target_alloc("mirror"); - dmt5 = dm_target_alloc("snapshot"); - dmt6 = dm_target_alloc("snapshot-origin"); dmt->version[0] = 1; dmt->version[1] = 0; @@ -271,7 +268,7 @@ dm_target_init(void) r = dm_target_insert(dmt); - dmt1->version[0] = 1; +/* dmt1->version[0] = 1; dmt1->version[1] = 0; dmt1->version[2] = 0; strlcpy(dmt1->name, "zero", DM_MAX_TYPE_NAME); @@ -295,7 +292,7 @@ dm_target_init(void) dmt2->destroy = &dm_target_error_destroy; dmt2->upcall = &dm_target_error_upcall; - r = dm_target_insert(dmt2); + r = dm_target_insert(dmt2);*/ dmt3->version[0] = 1; dmt3->version[1] = 0; @@ -323,7 +320,7 @@ dm_target_init(void) r = dm_target_insert(dmt4); - dmt5->version[0] = 1; +/* dmt5->version[0] = 1; dmt5->version[1] = 0; dmt5->version[2] = 5; strlcpy(dmt5->name, "snapshot", DM_MAX_TYPE_NAME); @@ -347,7 +344,7 @@ dm_target_init(void) dmt6->destroy = &dm_target_snapshot_orig_destroy; dmt6->upcall = &dm_target_snapshot_orig_upcall; - r = dm_target_insert(dmt6); + r = dm_target_insert(dmt6);*/ return r; } |
