Lines Matching refs:adm_ctx
128 static int drbd_adm_prepare(struct drbd_config_context *adm_ctx, in drbd_adm_prepare() argument
135 memset(adm_ctx, 0, sizeof(*adm_ctx)); in drbd_adm_prepare()
141 adm_ctx->reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); in drbd_adm_prepare()
142 if (!adm_ctx->reply_skb) { in drbd_adm_prepare()
147 adm_ctx->reply_dh = genlmsg_put_reply(adm_ctx->reply_skb, in drbd_adm_prepare()
151 if (!adm_ctx->reply_dh) { in drbd_adm_prepare()
156 adm_ctx->reply_dh->minor = d_in->minor; in drbd_adm_prepare()
157 adm_ctx->reply_dh->ret_code = NO_ERROR; in drbd_adm_prepare()
159 adm_ctx->volume = VOLUME_UNSPECIFIED; in drbd_adm_prepare()
169 err = nla_put_nohdr(adm_ctx->reply_skb, in drbd_adm_prepare()
178 adm_ctx->volume = nla_get_u32(nla); in drbd_adm_prepare()
181 adm_ctx->resource_name = nla_data(nla); in drbd_adm_prepare()
182 adm_ctx->my_addr = nested_attr_tb[__nla_type(T_ctx_my_addr)]; in drbd_adm_prepare()
183 adm_ctx->peer_addr = nested_attr_tb[__nla_type(T_ctx_peer_addr)]; in drbd_adm_prepare()
184 if ((adm_ctx->my_addr && in drbd_adm_prepare()
185 nla_len(adm_ctx->my_addr) > sizeof(adm_ctx->connection->my_addr)) || in drbd_adm_prepare()
186 (adm_ctx->peer_addr && in drbd_adm_prepare()
187 nla_len(adm_ctx->peer_addr) > sizeof(adm_ctx->connection->peer_addr))) { in drbd_adm_prepare()
193 adm_ctx->minor = d_in->minor; in drbd_adm_prepare()
194 adm_ctx->device = minor_to_device(d_in->minor); in drbd_adm_prepare()
199 if (adm_ctx->device) in drbd_adm_prepare()
200 kref_get(&adm_ctx->device->kref); in drbd_adm_prepare()
202 if (adm_ctx->resource_name) { in drbd_adm_prepare()
203 adm_ctx->resource = drbd_find_resource(adm_ctx->resource_name); in drbd_adm_prepare()
206 if (!adm_ctx->device && (flags & DRBD_ADM_NEED_MINOR)) { in drbd_adm_prepare()
207 drbd_msg_put_info(adm_ctx->reply_skb, "unknown minor"); in drbd_adm_prepare()
210 if (!adm_ctx->resource && (flags & DRBD_ADM_NEED_RESOURCE)) { in drbd_adm_prepare()
211 drbd_msg_put_info(adm_ctx->reply_skb, "unknown resource"); in drbd_adm_prepare()
212 if (adm_ctx->resource_name) in drbd_adm_prepare()
218 if (adm_ctx->resource) { in drbd_adm_prepare()
219 drbd_msg_put_info(adm_ctx->reply_skb, "no resource name expected"); in drbd_adm_prepare()
222 if (adm_ctx->device) { in drbd_adm_prepare()
223 drbd_msg_put_info(adm_ctx->reply_skb, "no minor number expected"); in drbd_adm_prepare()
226 if (adm_ctx->my_addr && adm_ctx->peer_addr) in drbd_adm_prepare()
227 adm_ctx->connection = conn_get_by_addrs(nla_data(adm_ctx->my_addr), in drbd_adm_prepare()
228 nla_len(adm_ctx->my_addr), in drbd_adm_prepare()
229 nla_data(adm_ctx->peer_addr), in drbd_adm_prepare()
230 nla_len(adm_ctx->peer_addr)); in drbd_adm_prepare()
231 if (!adm_ctx->connection) { in drbd_adm_prepare()
232 drbd_msg_put_info(adm_ctx->reply_skb, "unknown connection"); in drbd_adm_prepare()
238 if (adm_ctx->device && adm_ctx->resource && in drbd_adm_prepare()
239 adm_ctx->device->resource != adm_ctx->resource) { in drbd_adm_prepare()
241 adm_ctx->minor, adm_ctx->resource->name, in drbd_adm_prepare()
242 adm_ctx->device->resource->name); in drbd_adm_prepare()
243 drbd_msg_put_info(adm_ctx->reply_skb, "minor exists in different resource"); in drbd_adm_prepare()
246 if (adm_ctx->device && in drbd_adm_prepare()
247 adm_ctx->volume != VOLUME_UNSPECIFIED && in drbd_adm_prepare()
248 adm_ctx->volume != adm_ctx->device->vnr) { in drbd_adm_prepare()
250 adm_ctx->minor, adm_ctx->volume, in drbd_adm_prepare()
251 adm_ctx->device->vnr, in drbd_adm_prepare()
252 adm_ctx->device->resource->name); in drbd_adm_prepare()
253 drbd_msg_put_info(adm_ctx->reply_skb, "minor exists as different volume"); in drbd_adm_prepare()
258 if (!adm_ctx->resource) { in drbd_adm_prepare()
259 adm_ctx->resource = adm_ctx->device ? adm_ctx->device->resource in drbd_adm_prepare()
260 : adm_ctx->connection ? adm_ctx->connection->resource : NULL; in drbd_adm_prepare()
261 if (adm_ctx->resource) in drbd_adm_prepare()
262 kref_get(&adm_ctx->resource->kref); in drbd_adm_prepare()
268 nlmsg_free(adm_ctx->reply_skb); in drbd_adm_prepare()
269 adm_ctx->reply_skb = NULL; in drbd_adm_prepare()
273 static int drbd_adm_finish(struct drbd_config_context *adm_ctx, in drbd_adm_finish() argument
276 if (adm_ctx->device) { in drbd_adm_finish()
277 kref_put(&adm_ctx->device->kref, drbd_destroy_device); in drbd_adm_finish()
278 adm_ctx->device = NULL; in drbd_adm_finish()
280 if (adm_ctx->connection) { in drbd_adm_finish()
281 kref_put(&adm_ctx->connection->kref, &drbd_destroy_connection); in drbd_adm_finish()
282 adm_ctx->connection = NULL; in drbd_adm_finish()
284 if (adm_ctx->resource) { in drbd_adm_finish()
285 kref_put(&adm_ctx->resource->kref, drbd_destroy_resource); in drbd_adm_finish()
286 adm_ctx->resource = NULL; in drbd_adm_finish()
289 if (!adm_ctx->reply_skb) in drbd_adm_finish()
292 adm_ctx->reply_dh->ret_code = retcode; in drbd_adm_finish()
293 drbd_adm_send_reply(adm_ctx->reply_skb, info); in drbd_adm_finish()
716 struct drbd_config_context adm_ctx; in drbd_adm_set_role() local
721 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_set_role()
722 if (!adm_ctx.reply_skb) in drbd_adm_set_role()
732 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_set_role()
737 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_set_role()
740 retcode = drbd_set_role(adm_ctx.device, R_PRIMARY, parms.assume_uptodate); in drbd_adm_set_role()
742 retcode = drbd_set_role(adm_ctx.device, R_SECONDARY, 0); in drbd_adm_set_role()
744 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_set_role()
747 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_set_role()
1316 struct drbd_config_context adm_ctx; in drbd_adm_disk_opts() local
1323 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_disk_opts()
1324 if (!adm_ctx.reply_skb) in drbd_adm_disk_opts()
1329 device = adm_ctx.device; in drbd_adm_disk_opts()
1330 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_disk_opts()
1354 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_disk_opts()
1446 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_disk_opts()
1448 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_disk_opts()
1454 struct drbd_config_context adm_ctx; in drbd_adm_attach() local
1472 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_attach()
1473 if (!adm_ctx.reply_skb) in drbd_adm_attach()
1478 device = adm_ctx.device; in drbd_adm_attach()
1479 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
1524 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_attach()
1866 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
1867 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_attach()
1889 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
1891 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_attach()
1930 struct drbd_config_context adm_ctx; in drbd_adm_detach() local
1935 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_detach()
1936 if (!adm_ctx.reply_skb) in drbd_adm_detach()
1945 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_detach()
1950 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_detach()
1951 retcode = adm_detach(adm_ctx.device, parms.force_detach); in drbd_adm_detach()
1952 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_detach()
1954 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_detach()
2128 struct drbd_config_context adm_ctx; in drbd_adm_net_opts() local
2137 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_CONNECTION); in drbd_adm_net_opts()
2138 if (!adm_ctx.reply_skb) in drbd_adm_net_opts()
2143 connection = adm_ctx.connection; in drbd_adm_net_opts()
2144 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_net_opts()
2159 drbd_msg_put_info(adm_ctx.reply_skb, "net conf missing, try connect"); in drbd_adm_net_opts()
2171 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_net_opts()
2242 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_net_opts()
2244 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_net_opts()
2250 struct drbd_config_context adm_ctx; in drbd_adm_connect() local
2260 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_connect()
2262 if (!adm_ctx.reply_skb) in drbd_adm_connect()
2266 if (!(adm_ctx.my_addr && adm_ctx.peer_addr)) { in drbd_adm_connect()
2267 drbd_msg_put_info(adm_ctx.reply_skb, "connection endpoint(s) missing"); in drbd_adm_connect()
2277 if (nla_len(adm_ctx.my_addr) == connection->my_addr_len && in drbd_adm_connect()
2278 !memcmp(nla_data(adm_ctx.my_addr), &connection->my_addr, in drbd_adm_connect()
2284 if (nla_len(adm_ctx.peer_addr) == connection->peer_addr_len && in drbd_adm_connect()
2285 !memcmp(nla_data(adm_ctx.peer_addr), &connection->peer_addr, in drbd_adm_connect()
2293 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2294 connection = first_connection(adm_ctx.resource); in drbd_adm_connect()
2314 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_connect()
2330 mutex_lock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2334 mutex_unlock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2345 connection->my_addr_len = nla_len(adm_ctx.my_addr); in drbd_adm_connect()
2346 memcpy(&connection->my_addr, nla_data(adm_ctx.my_addr), connection->my_addr_len); in drbd_adm_connect()
2347 connection->peer_addr_len = nla_len(adm_ctx.peer_addr); in drbd_adm_connect()
2348 memcpy(&connection->peer_addr, nla_data(adm_ctx.peer_addr), connection->peer_addr_len); in drbd_adm_connect()
2350 mutex_unlock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2363 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2364 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_connect()
2372 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2374 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_connect()
2437 struct drbd_config_context adm_ctx; in drbd_adm_disconnect() local
2444 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_CONNECTION); in drbd_adm_disconnect()
2445 if (!adm_ctx.reply_skb) in drbd_adm_disconnect()
2450 connection = adm_ctx.connection; in drbd_adm_disconnect()
2456 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_disconnect()
2461 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_disconnect()
2467 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_disconnect()
2469 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_disconnect()
2491 struct drbd_config_context adm_ctx; in drbd_adm_resize() local
2502 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_resize()
2503 if (!adm_ctx.reply_skb) in drbd_adm_resize()
2508 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resize()
2509 device = adm_ctx.device; in drbd_adm_resize()
2522 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_resize()
2614 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resize()
2616 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_resize()
2626 struct drbd_config_context adm_ctx; in drbd_adm_resource_opts() local
2631 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_resource_opts()
2632 if (!adm_ctx.reply_skb) in drbd_adm_resource_opts()
2637 res_opts = adm_ctx.resource->res_opts; in drbd_adm_resource_opts()
2644 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_resource_opts()
2648 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resource_opts()
2649 err = set_resource_options(adm_ctx.resource, &res_opts); in drbd_adm_resource_opts()
2655 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resource_opts()
2658 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_resource_opts()
2664 struct drbd_config_context adm_ctx; in drbd_adm_invalidate() local
2668 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_invalidate()
2669 if (!adm_ctx.reply_skb) in drbd_adm_invalidate()
2674 device = adm_ctx.device; in drbd_adm_invalidate()
2680 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate()
2703 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate()
2706 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_invalidate()
2713 struct drbd_config_context adm_ctx; in drbd_adm_simple_request_state() local
2716 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_simple_request_state()
2717 if (!adm_ctx.reply_skb) in drbd_adm_simple_request_state()
2722 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_simple_request_state()
2723 retcode = drbd_request_state(adm_ctx.device, mask, val); in drbd_adm_simple_request_state()
2724 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_simple_request_state()
2726 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_simple_request_state()
2741 struct drbd_config_context adm_ctx; in drbd_adm_invalidate_peer() local
2745 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_invalidate_peer()
2746 if (!adm_ctx.reply_skb) in drbd_adm_invalidate_peer()
2751 device = adm_ctx.device; in drbd_adm_invalidate_peer()
2757 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate_peer()
2783 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate_peer()
2786 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_invalidate_peer()
2792 struct drbd_config_context adm_ctx; in drbd_adm_pause_sync() local
2795 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_pause_sync()
2796 if (!adm_ctx.reply_skb) in drbd_adm_pause_sync()
2801 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_pause_sync()
2802 if (drbd_request_state(adm_ctx.device, NS(user_isp, 1)) == SS_NOTHING_TO_DO) in drbd_adm_pause_sync()
2804 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_pause_sync()
2806 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_pause_sync()
2812 struct drbd_config_context adm_ctx; in drbd_adm_resume_sync() local
2816 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_resume_sync()
2817 if (!adm_ctx.reply_skb) in drbd_adm_resume_sync()
2822 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_sync()
2823 if (drbd_request_state(adm_ctx.device, NS(user_isp, 0)) == SS_NOTHING_TO_DO) { in drbd_adm_resume_sync()
2824 s = adm_ctx.device->state; in drbd_adm_resume_sync()
2832 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_sync()
2834 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_resume_sync()
2845 struct drbd_config_context adm_ctx; in drbd_adm_resume_io() local
2849 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_resume_io()
2850 if (!adm_ctx.reply_skb) in drbd_adm_resume_io()
2855 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_io()
2856 device = adm_ctx.device; in drbd_adm_resume_io()
2870 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_io()
2872 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_resume_io()
3048 struct drbd_config_context adm_ctx; in drbd_adm_get_status() local
3052 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_get_status()
3053 if (!adm_ctx.reply_skb) in drbd_adm_get_status()
3058 err = nla_put_status_info(adm_ctx.reply_skb, adm_ctx.device, NULL); in drbd_adm_get_status()
3060 nlmsg_free(adm_ctx.reply_skb); in drbd_adm_get_status()
3064 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_get_status()
3251 struct drbd_config_context adm_ctx; in drbd_adm_get_timeout_type() local
3256 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_get_timeout_type()
3257 if (!adm_ctx.reply_skb) in drbd_adm_get_timeout_type()
3263 adm_ctx.device->state.pdsk == D_OUTDATED ? UT_PEER_OUTDATED : in drbd_adm_get_timeout_type()
3264 test_bit(USE_DEGR_WFC_T, &adm_ctx.device->flags) ? UT_DEGRADED : in drbd_adm_get_timeout_type()
3267 err = timeout_parms_to_priv_skb(adm_ctx.reply_skb, &tp); in drbd_adm_get_timeout_type()
3269 nlmsg_free(adm_ctx.reply_skb); in drbd_adm_get_timeout_type()
3273 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_get_timeout_type()
3279 struct drbd_config_context adm_ctx; in drbd_adm_start_ov() local
3284 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_start_ov()
3285 if (!adm_ctx.reply_skb) in drbd_adm_start_ov()
3290 device = adm_ctx.device; in drbd_adm_start_ov()
3299 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_start_ov()
3303 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_start_ov()
3316 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_start_ov()
3318 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_start_ov()
3325 struct drbd_config_context adm_ctx; in drbd_adm_new_c_uuid() local
3332 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_new_c_uuid()
3333 if (!adm_ctx.reply_skb) in drbd_adm_new_c_uuid()
3338 device = adm_ctx.device; in drbd_adm_new_c_uuid()
3344 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_new_c_uuid()
3349 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_c_uuid()
3394 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_c_uuid()
3396 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_new_c_uuid()
3401 drbd_check_resource_name(struct drbd_config_context *adm_ctx) in drbd_check_resource_name() argument
3403 const char *name = adm_ctx->resource_name; in drbd_check_resource_name()
3405 drbd_msg_put_info(adm_ctx->reply_skb, "resource name missing"); in drbd_check_resource_name()
3411 drbd_msg_put_info(adm_ctx->reply_skb, "invalid resource name"); in drbd_check_resource_name()
3419 struct drbd_config_context adm_ctx; in drbd_adm_new_resource() local
3424 retcode = drbd_adm_prepare(&adm_ctx, skb, info, 0); in drbd_adm_new_resource()
3425 if (!adm_ctx.reply_skb) in drbd_adm_new_resource()
3434 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_new_resource()
3438 retcode = drbd_check_resource_name(&adm_ctx); in drbd_adm_new_resource()
3442 if (adm_ctx.resource) { in drbd_adm_new_resource()
3445 drbd_msg_put_info(adm_ctx.reply_skb, "resource exists"); in drbd_adm_new_resource()
3452 if (!conn_create(adm_ctx.resource_name, &res_opts)) in drbd_adm_new_resource()
3455 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_new_resource()
3461 struct drbd_config_context adm_ctx; in drbd_adm_new_minor() local
3465 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_new_minor()
3466 if (!adm_ctx.reply_skb) in drbd_adm_new_minor()
3472 drbd_msg_put_info(adm_ctx.reply_skb, "requested minor out of range"); in drbd_adm_new_minor()
3476 if (adm_ctx.volume > DRBD_VOLUME_MAX) { in drbd_adm_new_minor()
3477 drbd_msg_put_info(adm_ctx.reply_skb, "requested volume id out of range"); in drbd_adm_new_minor()
3484 if (adm_ctx.device) { in drbd_adm_new_minor()
3491 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_minor()
3492 retcode = drbd_create_device(&adm_ctx, dh->minor); in drbd_adm_new_minor()
3493 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_minor()
3495 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_new_minor()
3516 struct drbd_config_context adm_ctx; in drbd_adm_del_minor() local
3519 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_del_minor()
3520 if (!adm_ctx.reply_skb) in drbd_adm_del_minor()
3525 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_del_minor()
3526 retcode = adm_del_minor(adm_ctx.device); in drbd_adm_del_minor()
3527 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_del_minor()
3529 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_del_minor()
3556 struct drbd_config_context adm_ctx; in drbd_adm_down() local
3563 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_down()
3564 if (!adm_ctx.reply_skb) in drbd_adm_down()
3569 resource = adm_ctx.resource; in drbd_adm_down()
3578 drbd_msg_put_info(adm_ctx.reply_skb, "failed to demote"); in drbd_adm_down()
3585 drbd_msg_put_info(adm_ctx.reply_skb, "failed to disconnect"); in drbd_adm_down()
3594 drbd_msg_put_info(adm_ctx.reply_skb, "failed to detach"); in drbd_adm_down()
3604 drbd_msg_put_info(adm_ctx.reply_skb, "failed to delete volume"); in drbd_adm_down()
3613 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_down()
3619 struct drbd_config_context adm_ctx; in drbd_adm_del_resource() local
3623 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_del_resource()
3624 if (!adm_ctx.reply_skb) in drbd_adm_del_resource()
3628 resource = adm_ctx.resource; in drbd_adm_del_resource()
3634 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_del_resource()