Properly register dm_target_* modules with module framework.diff -r1.4 -r1.5 src/sys/dev/dm/dm_target_error.c
(haad)
--- src/sys/dev/dm/dm_target_error.c 2008/12/21 00:59:39 1.4
+++ src/sys/dev/dm/dm_target_error.c 2009/01/02 11:06:17 1.5
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: dm_target_error.c,v 1.4 2008/12/21 00:59:39 haad Exp $ */ | 1 | /* $NetBSD: dm_target_error.c,v 1.5 2009/01/02 11:06:17 haad Exp $ */ | |
2 | 2 | |||
3 | /* | 3 | /* | |
4 | * Copyright (c) 2008 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2008 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Adam Hamsik. | 8 | * by Adam Hamsik. | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
@@ -51,48 +51,53 @@ | @@ -51,48 +51,53 @@ | |||
51 | #include <sys/module.h> | 51 | #include <sys/module.h> | |
52 | 52 | |||
53 | MODULE(MODULE_CLASS_MISC, dm_target_error, NULL); | 53 | MODULE(MODULE_CLASS_MISC, dm_target_error, NULL); | |
54 | 54 | |||
55 | static int | 55 | static int | |
56 | dm_target_error_modcmd(modcmd_t cmd, void *arg) | 56 | dm_target_error_modcmd(modcmd_t cmd, void *arg) | |
57 | { | 57 | { | |
58 | dm_target_t *dmt; | 58 | dm_target_t *dmt; | |
59 | int r; | 59 | int r; | |
60 | dmt = NULL; | 60 | dmt = NULL; | |
61 | 61 | |||
62 | switch (cmd) { | 62 | switch (cmd) { | |
63 | case MODULE_CMD_INIT: | 63 | case MODULE_CMD_INIT: | |
64 | if ((r = module_hold("dm")) != 0) | |||
65 | return r; | |||
66 | ||||
64 | if ((dmt = dm_target_lookup("error")) != NULL) | 67 | if ((dmt = dm_target_lookup("error")) != NULL) | |
65 | return EEXIST; | 68 | return EEXIST; | |
66 | 69 | |||
67 | dmt = dm_target_alloc("error"); | 70 | dmt = dm_target_alloc("error"); | |
68 | 71 | |||
69 | dmt->version[0] = 1; | 72 | dmt->version[0] = 1; | |
70 | dmt->version[1] = 0; | 73 | dmt->version[1] = 0; | |
71 | dmt->version[2] = 0; | 74 | dmt->version[2] = 0; | |
72 | strlcpy(dmt->name, "error", DM_MAX_TYPE_NAME); | 75 | strlcpy(dmt->name, "error", DM_MAX_TYPE_NAME); | |
73 | dmt->init = &dm_target_error_init; | 76 | dmt->init = &dm_target_error_init; | |
74 | dmt->status = &dm_target_error_status; | 77 | dmt->status = &dm_target_error_status; | |
75 | dmt->strategy = &dm_target_error_strategy; | 78 | dmt->strategy = &dm_target_error_strategy; | |
76 | dmt->deps = &dm_target_error_deps; | 79 | dmt->deps = &dm_target_error_deps; | |
77 | dmt->destroy = &dm_target_error_destroy; | 80 | dmt->destroy = &dm_target_error_destroy; | |
78 | dmt->upcall = &dm_target_error_upcall; | 81 | dmt->upcall = &dm_target_error_upcall; | |
79 | 82 | |||
80 | r = dm_target_insert(dmt); | 83 | r = dm_target_insert(dmt); | |
81 | 84 | |||
82 | break; | 85 | break; | |
83 | 86 | |||
84 | case MODULE_CMD_FINI: | 87 | case MODULE_CMD_FINI: | |
85 | r = dm_target_rem("error"); | 88 | r = dm_target_rem("error"); | |
89 | module_rele("dm"); /* release usage counter on dm module */ | |||
90 | ||||
86 | break; | 91 | break; | |
87 | 92 | |||
88 | case MODULE_CMD_STAT: | 93 | case MODULE_CMD_STAT: | |
89 | return ENOTTY; | 94 | return ENOTTY; | |
90 | 95 | |||
91 | default: | 96 | default: | |
92 | return ENOTTY; | 97 | return ENOTTY; | |
93 | } | 98 | } | |
94 | 99 | |||
95 | return r; | 100 | return r; | |
96 | } | 101 | } | |
97 | 102 | |||
98 | #endif | 103 | #endif |
--- src/sys/dev/dm/dm_target_zero.c 2008/12/21 00:59:39 1.4
+++ src/sys/dev/dm/dm_target_zero.c 2009/01/02 11:06:17 1.5
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: dm_target_zero.c,v 1.4 2008/12/21 00:59:39 haad Exp $ */ | 1 | /* $NetBSD: dm_target_zero.c,v 1.5 2009/01/02 11:06:17 haad Exp $ */ | |
2 | 2 | |||
3 | /* | 3 | /* | |
4 | * Copyright (c) 2008 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2008 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Adam Hamsik. | 8 | * by Adam Hamsik. | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
@@ -52,47 +52,52 @@ | @@ -52,47 +52,52 @@ | |||
52 | #include <sys/module.h> | 52 | #include <sys/module.h> | |
53 | 53 | |||
54 | MODULE(MODULE_CLASS_MISC, dm_target_zero, NULL); | 54 | MODULE(MODULE_CLASS_MISC, dm_target_zero, NULL); | |
55 | 55 | |||
56 | static int | 56 | static int | |
57 | dm_target_zero_modcmd(modcmd_t cmd, void *arg) | 57 | dm_target_zero_modcmd(modcmd_t cmd, void *arg) | |
58 | { | 58 | { | |
59 | dm_target_t *dmt; | 59 | dm_target_t *dmt; | |
60 | int r; | 60 | int r; | |
61 | dmt = NULL; | 61 | dmt = NULL; | |
62 | 62 | |||
63 | switch (cmd) { | 63 | switch (cmd) { | |
64 | case MODULE_CMD_INIT: | 64 | case MODULE_CMD_INIT: | |
65 | if ((r = module_hold("dm")) != 0) | |||
66 | return r; | |||
67 | ||||
65 | if ((dmt = dm_target_lookup("zero")) != NULL) | 68 | if ((dmt = dm_target_lookup("zero")) != NULL) | |
66 | return EEXIST; | 69 | return EEXIST; | |
67 | 70 | |||
68 | dmt = dm_target_alloc("zero"); | 71 | dmt = dm_target_alloc("zero"); | |
69 | 72 | |||
70 | dmt->version[0] = 1; | 73 | dmt->version[0] = 1; | |
71 | dmt->version[1] = 0; | 74 | dmt->version[1] = 0; | |
72 | dmt->version[2] = 0; | 75 | dmt->version[2] = 0; | |
73 | strlcpy(dmt->name, "zero", DM_MAX_TYPE_NAME); | 76 | strlcpy(dmt->name, "zero", DM_MAX_TYPE_NAME); | |
74 | dmt->init = &dm_target_zero_init; | 77 | dmt->init = &dm_target_zero_init; | |
75 | dmt->status = &dm_target_zero_status; | 78 | dmt->status = &dm_target_zero_status; | |
76 | dmt->strategy = &dm_target_zero_strategy; | 79 | dmt->strategy = &dm_target_zero_strategy; | |
77 | dmt->deps = &dm_target_zero_deps; | 80 | dmt->deps = &dm_target_zero_deps; | |
78 | dmt->destroy = &dm_target_zero_destroy; | 81 | dmt->destroy = &dm_target_zero_destroy; | |
79 | dmt->upcall = &dm_target_zero_upcall; | 82 | dmt->upcall = &dm_target_zero_upcall; | |
80 | 83 | |||
81 | r = dm_target_insert(dmt); | 84 | r = dm_target_insert(dmt); | |
82 | break; | 85 | break; | |
83 | 86 | |||
84 | case MODULE_CMD_FINI: | 87 | case MODULE_CMD_FINI: | |
85 | r = dm_target_rem("zero"); | 88 | r = dm_target_rem("zero"); | |
89 | module_rele("dm"); /* release usage counter on dm module */ | |||
90 | ||||
86 | break; | 91 | break; | |
87 | 92 | |||
88 | case MODULE_CMD_STAT: | 93 | case MODULE_CMD_STAT: | |
89 | return ENOTTY; | 94 | return ENOTTY; | |
90 | 95 | |||
91 | default: | 96 | default: | |
92 | return ENOTTY; | 97 | return ENOTTY; | |
93 | } | 98 | } | |
94 | 99 | |||
95 | return r; | 100 | return r; | |
96 | } | 101 | } | |
97 | 102 | |||
98 | #endif | 103 | #endif |
--- src/sys/dev/dm/dm_target_snapshot.c 2009/01/02 00:42:31 1.5
+++ src/sys/dev/dm/dm_target_snapshot.c 2009/01/02 11:06:17 1.6
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: dm_target_snapshot.c,v 1.5 2009/01/02 00:42:31 haad Exp $ */ | 1 | /* $NetBSD: dm_target_snapshot.c,v 1.6 2009/01/02 11:06:17 haad Exp $ */ | |
2 | 2 | |||
3 | /* | 3 | /* | |
4 | * Copyright (c) 2008 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2008 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Adam Hamsik. | 8 | * by Adam Hamsik. | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
@@ -97,26 +97,29 @@ | @@ -97,26 +97,29 @@ | |||
97 | #include <sys/module.h> | 97 | #include <sys/module.h> | |
98 | 98 | |||
99 | MODULE(MODULE_CLASS_MISC, dm_target_snapshot, NULL); | 99 | MODULE(MODULE_CLASS_MISC, dm_target_snapshot, NULL); | |
100 | 100 | |||
101 | static int | 101 | static int | |
102 | dm_target_snapshot_modcmd(modcmd_t cmd, void *arg) | 102 | dm_target_snapshot_modcmd(modcmd_t cmd, void *arg) | |
103 | { | 103 | { | |
104 | dm_target_t *dmt, *dmt1; | 104 | dm_target_t *dmt, *dmt1; | |
105 | int r; | 105 | int r; | |
106 | dmt = NULL; | 106 | dmt = NULL; | |
107 | 107 | |||
108 | switch (cmd) { | 108 | switch (cmd) { | |
109 | case MODULE_CMD_INIT: | 109 | case MODULE_CMD_INIT: | |
110 | if ((r = module_hold("dm")) != 0) | |||
111 | return r; | |||
112 | ||||
110 | if (((dmt = dm_target_lookup("snapshot")) != NULL) || | 113 | if (((dmt = dm_target_lookup("snapshot")) != NULL) || | |
111 | (((dmt = dm_target_lookup("snapshot-origin")) != NULL))) | 114 | (((dmt = dm_target_lookup("snapshot-origin")) != NULL))) | |
112 | return EEXIST; | 115 | return EEXIST; | |
113 | 116 | |||
114 | dmt = dm_target_alloc("snapshot"); | 117 | dmt = dm_target_alloc("snapshot"); | |
115 | dmt1 = dm_target_alloc("snapshot-origin"); | 118 | dmt1 = dm_target_alloc("snapshot-origin"); | |
116 | 119 | |||
117 | dmt->version[0] = 1; | 120 | dmt->version[0] = 1; | |
118 | dmt->version[1] = 0; | 121 | dmt->version[1] = 0; | |
119 | dmt->version[2] = 5; | 122 | dmt->version[2] = 5; | |
120 | strlcpy(dmt->name, "snapshot", DM_MAX_TYPE_NAME); | 123 | strlcpy(dmt->name, "snapshot", DM_MAX_TYPE_NAME); | |
121 | dmt->init = &dm_target_snapshot_init; | 124 | dmt->init = &dm_target_snapshot_init; | |
122 | dmt->status = &dm_target_snapshot_status; | 125 | dmt->status = &dm_target_snapshot_status; | |
@@ -139,26 +142,29 @@ dm_target_snapshot_modcmd(modcmd_t cmd, | @@ -139,26 +142,29 @@ dm_target_snapshot_modcmd(modcmd_t cmd, | |||
139 | dmt1->upcall = &dm_target_snapshot_orig_upcall; | 142 | dmt1->upcall = &dm_target_snapshot_orig_upcall; | |
140 | 143 | |||
141 | r = dm_target_insert(dmt1); | 144 | r = dm_target_insert(dmt1); | |
142 | break; | 145 | break; | |
143 | 146 | |||
144 | case MODULE_CMD_FINI: | 147 | case MODULE_CMD_FINI: | |
145 | /* | 148 | /* | |
146 | * Try to remove snapshot target if it works remove snap-origin | 149 | * Try to remove snapshot target if it works remove snap-origin | |
147 | * it is not possible to remove snapshot and do not remove | 150 | * it is not possible to remove snapshot and do not remove | |
148 | * snap-origin because they are used together. | 151 | * snap-origin because they are used together. | |
149 | */ | 152 | */ | |
150 | if ((r = dm_target_rem("snapshot")) == 0) | 153 | if ((r = dm_target_rem("snapshot")) == 0) | |
151 | r = dm_target_rem("snapshot-origin"); | 154 | r = dm_target_rem("snapshot-origin"); | |
155 | ||||
156 | module_rele("dm"); /* release usage counter on dm module */ | |||
157 | ||||
152 | break; | 158 | break; | |
153 | 159 | |||
154 | case MODULE_CMD_STAT: | 160 | case MODULE_CMD_STAT: | |
155 | return ENOTTY; | 161 | return ENOTTY; | |
156 | 162 | |||
157 | default: | 163 | default: | |
158 | return ENOTTY; | 164 | return ENOTTY; | |
159 | } | 165 | } | |
160 | 166 | |||
161 | return r; | 167 | return r; | |
162 | } | 168 | } | |
163 | 169 | |||
164 | #endif | 170 | #endif |