Lines Matching refs:adm_ctx
142 static int drbd_adm_prepare(struct drbd_config_context *adm_ctx, in drbd_adm_prepare() argument
149 memset(adm_ctx, 0, sizeof(*adm_ctx)); in drbd_adm_prepare()
155 adm_ctx->reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); in drbd_adm_prepare()
156 if (!adm_ctx->reply_skb) { in drbd_adm_prepare()
161 adm_ctx->reply_dh = genlmsg_put_reply(adm_ctx->reply_skb, in drbd_adm_prepare()
165 if (!adm_ctx->reply_dh) { in drbd_adm_prepare()
170 adm_ctx->reply_dh->minor = d_in->minor; in drbd_adm_prepare()
171 adm_ctx->reply_dh->ret_code = NO_ERROR; in drbd_adm_prepare()
173 adm_ctx->volume = VOLUME_UNSPECIFIED; in drbd_adm_prepare()
183 err = nla_put_nohdr(adm_ctx->reply_skb, in drbd_adm_prepare()
192 adm_ctx->volume = nla_get_u32(nla); in drbd_adm_prepare()
195 adm_ctx->resource_name = nla_data(nla); in drbd_adm_prepare()
196 adm_ctx->my_addr = nested_attr_tb[__nla_type(T_ctx_my_addr)]; in drbd_adm_prepare()
197 adm_ctx->peer_addr = nested_attr_tb[__nla_type(T_ctx_peer_addr)]; in drbd_adm_prepare()
198 if ((adm_ctx->my_addr && in drbd_adm_prepare()
199 nla_len(adm_ctx->my_addr) > sizeof(adm_ctx->connection->my_addr)) || in drbd_adm_prepare()
200 (adm_ctx->peer_addr && in drbd_adm_prepare()
201 nla_len(adm_ctx->peer_addr) > sizeof(adm_ctx->connection->peer_addr))) { in drbd_adm_prepare()
207 adm_ctx->minor = d_in->minor; in drbd_adm_prepare()
208 adm_ctx->device = minor_to_device(d_in->minor); in drbd_adm_prepare()
213 if (adm_ctx->device) in drbd_adm_prepare()
214 kref_get(&adm_ctx->device->kref); in drbd_adm_prepare()
216 if (adm_ctx->resource_name) { in drbd_adm_prepare()
217 adm_ctx->resource = drbd_find_resource(adm_ctx->resource_name); in drbd_adm_prepare()
220 if (!adm_ctx->device && (flags & DRBD_ADM_NEED_MINOR)) { in drbd_adm_prepare()
221 drbd_msg_put_info(adm_ctx->reply_skb, "unknown minor"); in drbd_adm_prepare()
224 if (!adm_ctx->resource && (flags & DRBD_ADM_NEED_RESOURCE)) { in drbd_adm_prepare()
225 drbd_msg_put_info(adm_ctx->reply_skb, "unknown resource"); in drbd_adm_prepare()
226 if (adm_ctx->resource_name) in drbd_adm_prepare()
232 if (adm_ctx->resource) { in drbd_adm_prepare()
233 drbd_msg_put_info(adm_ctx->reply_skb, "no resource name expected"); in drbd_adm_prepare()
236 if (adm_ctx->device) { in drbd_adm_prepare()
237 drbd_msg_put_info(adm_ctx->reply_skb, "no minor number expected"); in drbd_adm_prepare()
240 if (adm_ctx->my_addr && adm_ctx->peer_addr) in drbd_adm_prepare()
241 adm_ctx->connection = conn_get_by_addrs(nla_data(adm_ctx->my_addr), in drbd_adm_prepare()
242 nla_len(adm_ctx->my_addr), in drbd_adm_prepare()
243 nla_data(adm_ctx->peer_addr), in drbd_adm_prepare()
244 nla_len(adm_ctx->peer_addr)); in drbd_adm_prepare()
245 if (!adm_ctx->connection) { in drbd_adm_prepare()
246 drbd_msg_put_info(adm_ctx->reply_skb, "unknown connection"); in drbd_adm_prepare()
252 if (adm_ctx->device && adm_ctx->resource && in drbd_adm_prepare()
253 adm_ctx->device->resource != adm_ctx->resource) { in drbd_adm_prepare()
255 adm_ctx->minor, adm_ctx->resource->name, in drbd_adm_prepare()
256 adm_ctx->device->resource->name); in drbd_adm_prepare()
257 drbd_msg_put_info(adm_ctx->reply_skb, "minor exists in different resource"); in drbd_adm_prepare()
260 if (adm_ctx->device && in drbd_adm_prepare()
261 adm_ctx->volume != VOLUME_UNSPECIFIED && in drbd_adm_prepare()
262 adm_ctx->volume != adm_ctx->device->vnr) { in drbd_adm_prepare()
264 adm_ctx->minor, adm_ctx->volume, in drbd_adm_prepare()
265 adm_ctx->device->vnr, in drbd_adm_prepare()
266 adm_ctx->device->resource->name); in drbd_adm_prepare()
267 drbd_msg_put_info(adm_ctx->reply_skb, "minor exists as different volume"); in drbd_adm_prepare()
272 if (!adm_ctx->resource) { in drbd_adm_prepare()
273 adm_ctx->resource = adm_ctx->device ? adm_ctx->device->resource in drbd_adm_prepare()
274 : adm_ctx->connection ? adm_ctx->connection->resource : NULL; in drbd_adm_prepare()
275 if (adm_ctx->resource) in drbd_adm_prepare()
276 kref_get(&adm_ctx->resource->kref); in drbd_adm_prepare()
282 nlmsg_free(adm_ctx->reply_skb); in drbd_adm_prepare()
283 adm_ctx->reply_skb = NULL; in drbd_adm_prepare()
287 static int drbd_adm_finish(struct drbd_config_context *adm_ctx, in drbd_adm_finish() argument
290 if (adm_ctx->device) { in drbd_adm_finish()
291 kref_put(&adm_ctx->device->kref, drbd_destroy_device); in drbd_adm_finish()
292 adm_ctx->device = NULL; in drbd_adm_finish()
294 if (adm_ctx->connection) { in drbd_adm_finish()
295 kref_put(&adm_ctx->connection->kref, &drbd_destroy_connection); in drbd_adm_finish()
296 adm_ctx->connection = NULL; in drbd_adm_finish()
298 if (adm_ctx->resource) { in drbd_adm_finish()
299 kref_put(&adm_ctx->resource->kref, drbd_destroy_resource); in drbd_adm_finish()
300 adm_ctx->resource = NULL; in drbd_adm_finish()
303 if (!adm_ctx->reply_skb) in drbd_adm_finish()
306 adm_ctx->reply_dh->ret_code = retcode; in drbd_adm_finish()
307 drbd_adm_send_reply(adm_ctx->reply_skb, info); in drbd_adm_finish()
752 struct drbd_config_context adm_ctx; in drbd_adm_set_role() local
757 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_set_role()
758 if (!adm_ctx.reply_skb) in drbd_adm_set_role()
768 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_set_role()
773 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_set_role()
776 retcode = drbd_set_role(adm_ctx.device, R_PRIMARY, parms.assume_uptodate); in drbd_adm_set_role()
778 retcode = drbd_set_role(adm_ctx.device, R_SECONDARY, 0); in drbd_adm_set_role()
780 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_set_role()
783 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_set_role()
1519 struct drbd_config_context adm_ctx; in drbd_adm_disk_opts() local
1526 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_disk_opts()
1527 if (!adm_ctx.reply_skb) in drbd_adm_disk_opts()
1532 device = adm_ctx.device; in drbd_adm_disk_opts()
1533 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_disk_opts()
1557 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_disk_opts()
1650 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_disk_opts()
1652 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_disk_opts()
1740 struct drbd_config_context adm_ctx; in drbd_adm_attach() local
1757 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_attach()
1758 if (!adm_ctx.reply_skb) in drbd_adm_attach()
1763 device = adm_ctx.device; in drbd_adm_attach()
1764 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
1809 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_attach()
2125 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
2126 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_attach()
2144 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
2146 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_attach()
2168 struct drbd_config_context adm_ctx; in drbd_adm_detach() local
2173 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_detach()
2174 if (!adm_ctx.reply_skb) in drbd_adm_detach()
2183 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_detach()
2188 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_detach()
2189 retcode = adm_detach(adm_ctx.device, parms.force_detach); in drbd_adm_detach()
2190 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_detach()
2192 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_detach()
2381 struct drbd_config_context adm_ctx; in drbd_adm_net_opts() local
2390 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_CONNECTION); in drbd_adm_net_opts()
2391 if (!adm_ctx.reply_skb) in drbd_adm_net_opts()
2396 connection = adm_ctx.connection; in drbd_adm_net_opts()
2397 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_net_opts()
2412 drbd_msg_put_info(adm_ctx.reply_skb, "net conf missing, try connect"); in drbd_adm_net_opts()
2424 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_net_opts()
2495 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_net_opts()
2497 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_net_opts()
2526 struct drbd_config_context adm_ctx; in drbd_adm_connect() local
2536 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_connect()
2538 if (!adm_ctx.reply_skb) in drbd_adm_connect()
2542 if (!(adm_ctx.my_addr && adm_ctx.peer_addr)) { in drbd_adm_connect()
2543 drbd_msg_put_info(adm_ctx.reply_skb, "connection endpoint(s) missing"); in drbd_adm_connect()
2553 if (nla_len(adm_ctx.my_addr) == connection->my_addr_len && in drbd_adm_connect()
2554 !memcmp(nla_data(adm_ctx.my_addr), &connection->my_addr, in drbd_adm_connect()
2560 if (nla_len(adm_ctx.peer_addr) == connection->peer_addr_len && in drbd_adm_connect()
2561 !memcmp(nla_data(adm_ctx.peer_addr), &connection->peer_addr, in drbd_adm_connect()
2569 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2570 connection = first_connection(adm_ctx.resource); in drbd_adm_connect()
2590 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_connect()
2606 mutex_lock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2610 mutex_unlock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2621 connection->my_addr_len = nla_len(adm_ctx.my_addr); in drbd_adm_connect()
2622 memcpy(&connection->my_addr, nla_data(adm_ctx.my_addr), connection->my_addr_len); in drbd_adm_connect()
2623 connection->peer_addr_len = nla_len(adm_ctx.peer_addr); in drbd_adm_connect()
2624 memcpy(&connection->peer_addr, nla_data(adm_ctx.peer_addr), connection->peer_addr_len); in drbd_adm_connect()
2642 mutex_unlock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2655 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2656 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_connect()
2664 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2666 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_connect()
2731 struct drbd_config_context adm_ctx; in drbd_adm_disconnect() local
2738 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_CONNECTION); in drbd_adm_disconnect()
2739 if (!adm_ctx.reply_skb) in drbd_adm_disconnect()
2744 connection = adm_ctx.connection; in drbd_adm_disconnect()
2750 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_disconnect()
2755 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_disconnect()
2761 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_disconnect()
2763 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_disconnect()
2785 struct drbd_config_context adm_ctx; in drbd_adm_resize() local
2796 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_resize()
2797 if (!adm_ctx.reply_skb) in drbd_adm_resize()
2802 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resize()
2803 device = adm_ctx.device; in drbd_adm_resize()
2816 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_resize()
2909 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resize()
2911 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_resize()
2922 struct drbd_config_context adm_ctx; in drbd_adm_resource_opts() local
2927 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_resource_opts()
2928 if (!adm_ctx.reply_skb) in drbd_adm_resource_opts()
2933 res_opts = adm_ctx.resource->res_opts; in drbd_adm_resource_opts()
2940 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_resource_opts()
2944 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resource_opts()
2945 err = set_resource_options(adm_ctx.resource, &res_opts); in drbd_adm_resource_opts()
2951 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resource_opts()
2954 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_resource_opts()
2960 struct drbd_config_context adm_ctx; in drbd_adm_invalidate() local
2964 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_invalidate()
2965 if (!adm_ctx.reply_skb) in drbd_adm_invalidate()
2970 device = adm_ctx.device; in drbd_adm_invalidate()
2976 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate()
2999 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate()
3002 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_invalidate()
3009 struct drbd_config_context adm_ctx; in drbd_adm_simple_request_state() local
3012 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_simple_request_state()
3013 if (!adm_ctx.reply_skb) in drbd_adm_simple_request_state()
3018 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_simple_request_state()
3019 retcode = drbd_request_state(adm_ctx.device, mask, val); in drbd_adm_simple_request_state()
3020 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_simple_request_state()
3022 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_simple_request_state()
3037 struct drbd_config_context adm_ctx; in drbd_adm_invalidate_peer() local
3041 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_invalidate_peer()
3042 if (!adm_ctx.reply_skb) in drbd_adm_invalidate_peer()
3047 device = adm_ctx.device; in drbd_adm_invalidate_peer()
3053 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate_peer()
3079 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate_peer()
3082 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_invalidate_peer()
3088 struct drbd_config_context adm_ctx; in drbd_adm_pause_sync() local
3091 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_pause_sync()
3092 if (!adm_ctx.reply_skb) in drbd_adm_pause_sync()
3097 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_pause_sync()
3098 if (drbd_request_state(adm_ctx.device, NS(user_isp, 1)) == SS_NOTHING_TO_DO) in drbd_adm_pause_sync()
3100 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_pause_sync()
3102 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_pause_sync()
3108 struct drbd_config_context adm_ctx; in drbd_adm_resume_sync() local
3112 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_resume_sync()
3113 if (!adm_ctx.reply_skb) in drbd_adm_resume_sync()
3118 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_sync()
3119 if (drbd_request_state(adm_ctx.device, NS(user_isp, 0)) == SS_NOTHING_TO_DO) { in drbd_adm_resume_sync()
3120 s = adm_ctx.device->state; in drbd_adm_resume_sync()
3128 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_sync()
3130 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_resume_sync()
3141 struct drbd_config_context adm_ctx; in drbd_adm_resume_io() local
3145 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_resume_io()
3146 if (!adm_ctx.reply_skb) in drbd_adm_resume_io()
3151 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_io()
3152 device = adm_ctx.device; in drbd_adm_resume_io()
3189 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_io()
3191 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_resume_io()
3851 struct drbd_config_context adm_ctx; in drbd_adm_get_status() local
3855 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_get_status()
3856 if (!adm_ctx.reply_skb) in drbd_adm_get_status()
3861 err = nla_put_status_info(adm_ctx.reply_skb, adm_ctx.device, NULL); in drbd_adm_get_status()
3863 nlmsg_free(adm_ctx.reply_skb); in drbd_adm_get_status()
3867 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_get_status()
4054 struct drbd_config_context adm_ctx; in drbd_adm_get_timeout_type() local
4059 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_get_timeout_type()
4060 if (!adm_ctx.reply_skb) in drbd_adm_get_timeout_type()
4066 adm_ctx.device->state.pdsk == D_OUTDATED ? UT_PEER_OUTDATED : in drbd_adm_get_timeout_type()
4067 test_bit(USE_DEGR_WFC_T, &adm_ctx.device->flags) ? UT_DEGRADED : in drbd_adm_get_timeout_type()
4070 err = timeout_parms_to_priv_skb(adm_ctx.reply_skb, &tp); in drbd_adm_get_timeout_type()
4072 nlmsg_free(adm_ctx.reply_skb); in drbd_adm_get_timeout_type()
4076 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_get_timeout_type()
4082 struct drbd_config_context adm_ctx; in drbd_adm_start_ov() local
4087 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_start_ov()
4088 if (!adm_ctx.reply_skb) in drbd_adm_start_ov()
4093 device = adm_ctx.device; in drbd_adm_start_ov()
4102 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_start_ov()
4106 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_start_ov()
4119 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_start_ov()
4121 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_start_ov()
4128 struct drbd_config_context adm_ctx; in drbd_adm_new_c_uuid() local
4135 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_new_c_uuid()
4136 if (!adm_ctx.reply_skb) in drbd_adm_new_c_uuid()
4141 device = adm_ctx.device; in drbd_adm_new_c_uuid()
4147 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_new_c_uuid()
4152 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_c_uuid()
4197 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_c_uuid()
4199 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_new_c_uuid()
4204 drbd_check_resource_name(struct drbd_config_context *adm_ctx) in drbd_check_resource_name() argument
4206 const char *name = adm_ctx->resource_name; in drbd_check_resource_name()
4208 drbd_msg_put_info(adm_ctx->reply_skb, "resource name missing"); in drbd_check_resource_name()
4214 drbd_msg_put_info(adm_ctx->reply_skb, "invalid resource name"); in drbd_check_resource_name()
4232 struct drbd_config_context adm_ctx; in drbd_adm_new_resource() local
4237 retcode = drbd_adm_prepare(&adm_ctx, skb, info, 0); in drbd_adm_new_resource()
4238 if (!adm_ctx.reply_skb) in drbd_adm_new_resource()
4247 drbd_msg_put_info(adm_ctx.reply_skb, from_attrs_err_to_txt(err)); in drbd_adm_new_resource()
4251 retcode = drbd_check_resource_name(&adm_ctx); in drbd_adm_new_resource()
4255 if (adm_ctx.resource) { in drbd_adm_new_resource()
4258 drbd_msg_put_info(adm_ctx.reply_skb, "resource exists"); in drbd_adm_new_resource()
4266 connection = conn_create(adm_ctx.resource_name, &res_opts); in drbd_adm_new_resource()
4281 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_new_resource()
4294 struct drbd_config_context adm_ctx; in drbd_adm_new_minor() local
4298 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_new_minor()
4299 if (!adm_ctx.reply_skb) in drbd_adm_new_minor()
4305 drbd_msg_put_info(adm_ctx.reply_skb, "requested minor out of range"); in drbd_adm_new_minor()
4309 if (adm_ctx.volume > DRBD_VOLUME_MAX) { in drbd_adm_new_minor()
4310 drbd_msg_put_info(adm_ctx.reply_skb, "requested volume id out of range"); in drbd_adm_new_minor()
4317 if (adm_ctx.device) { in drbd_adm_new_minor()
4324 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_minor()
4325 retcode = drbd_create_device(&adm_ctx, dh->minor); in drbd_adm_new_minor()
4356 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_minor()
4358 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_new_minor()
4401 struct drbd_config_context adm_ctx; in drbd_adm_del_minor() local
4404 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_MINOR); in drbd_adm_del_minor()
4405 if (!adm_ctx.reply_skb) in drbd_adm_del_minor()
4410 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_del_minor()
4411 retcode = adm_del_minor(adm_ctx.device); in drbd_adm_del_minor()
4412 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_del_minor()
4414 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_del_minor()
4450 struct drbd_config_context adm_ctx; in drbd_adm_down() local
4457 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_down()
4458 if (!adm_ctx.reply_skb) in drbd_adm_down()
4463 resource = adm_ctx.resource; in drbd_adm_down()
4472 drbd_msg_put_info(adm_ctx.reply_skb, "failed to demote"); in drbd_adm_down()
4479 drbd_msg_put_info(adm_ctx.reply_skb, "failed to disconnect"); in drbd_adm_down()
4488 drbd_msg_put_info(adm_ctx.reply_skb, "failed to detach"); in drbd_adm_down()
4498 drbd_msg_put_info(adm_ctx.reply_skb, "failed to delete volume"); in drbd_adm_down()
4507 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_down()
4513 struct drbd_config_context adm_ctx; in drbd_adm_del_resource() local
4517 retcode = drbd_adm_prepare(&adm_ctx, skb, info, DRBD_ADM_NEED_RESOURCE); in drbd_adm_del_resource()
4518 if (!adm_ctx.reply_skb) in drbd_adm_del_resource()
4522 resource = adm_ctx.resource; in drbd_adm_del_resource()
4528 drbd_adm_finish(&adm_ctx, info, retcode); in drbd_adm_del_resource()