Lines Matching refs:resource
234 adm_ctx->resource = drbd_find_resource(adm_ctx->resource_name); in drbd_adm_prepare()
241 if (!adm_ctx->resource && (flags & DRBD_ADM_NEED_RESOURCE)) { in drbd_adm_prepare()
249 if (adm_ctx->resource) { in drbd_adm_prepare()
269 if (adm_ctx->device && adm_ctx->resource && in drbd_adm_prepare()
270 adm_ctx->device->resource != adm_ctx->resource) { in drbd_adm_prepare()
272 adm_ctx->minor, adm_ctx->resource->name, in drbd_adm_prepare()
273 adm_ctx->device->resource->name); in drbd_adm_prepare()
282 adm_ctx->device->vnr, adm_ctx->device->resource->name); in drbd_adm_prepare()
288 if (!adm_ctx->resource) { in drbd_adm_prepare()
289 adm_ctx->resource = adm_ctx->device ? adm_ctx->device->resource in drbd_adm_prepare()
290 : adm_ctx->connection ? adm_ctx->connection->resource : NULL; in drbd_adm_prepare()
291 if (adm_ctx->resource) in drbd_adm_prepare()
292 kref_get(&adm_ctx->resource->kref); in drbd_adm_prepare()
314 if (adm_ctx->resource) { in drbd_adm_finish()
315 kref_put(&adm_ctx->resource->kref, drbd_destroy_resource); in drbd_adm_finish()
316 adm_ctx->resource = NULL; in drbd_adm_finish()
414 char *resource_name = connection->resource->name; in conn_khelper()
464 static bool resource_is_supended(struct drbd_resource *resource) in resource_is_supended() argument
466 return resource->susp || resource->susp_fen || resource->susp_nod; in resource_is_supended()
471 struct drbd_resource * const resource = connection->resource; in conn_try_outdate_peer() local
479 spin_lock_irq(&resource->req_lock); in conn_try_outdate_peer()
482 spin_unlock_irq(&resource->req_lock); in conn_try_outdate_peer()
487 spin_unlock_irq(&resource->req_lock); in conn_try_outdate_peer()
493 spin_lock_irq(&resource->req_lock); in conn_try_outdate_peer()
502 if (!resource_is_supended(resource)) in conn_try_outdate_peer()
511 spin_unlock_irq(&resource->req_lock); in conn_try_outdate_peer()
572 spin_lock_irq(&resource->req_lock); in conn_try_outdate_peer()
581 spin_unlock_irq(&resource->req_lock); in conn_try_outdate_peer()
632 for_each_connection(connection, device->resource) in drbd_set_role()
724 mutex_lock(&device->resource->conf_update); in drbd_set_role()
728 mutex_unlock(&device->resource->conf_update); in drbd_set_role()
791 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_set_role()
798 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_set_role()
1355 spin_lock_irq(&connection->resource->req_lock); in conn_reconfig_done()
1358 spin_unlock_irq(&connection->resource->req_lock); in conn_reconfig_done()
1378 spin_lock_irq(&device->resource->req_lock); in drbd_suspend_al()
1381 spin_unlock_irq(&device->resource->req_lock); in drbd_suspend_al()
1511 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_disk_opts()
1526 mutex_lock(&device->resource->conf_update); in drbd_adm_disk_opts()
1583 mutex_unlock(&device->resource->conf_update); in drbd_adm_disk_opts()
1596 drbd_bump_write_ordering(device->resource, NULL, WO_BDEV_FLUSH); in drbd_adm_disk_opts()
1617 mutex_unlock(&device->resource->conf_update); in drbd_adm_disk_opts()
1624 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_disk_opts()
1742 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
1975 drbd_bump_write_ordering(device->resource, device->ldev, WO_BDEV_FLUSH); in drbd_adm_attach()
1984 !(device->state.role == R_PRIMARY && device->resource->susp_nod)) in drbd_adm_attach()
2044 spin_lock_irq(&device->resource->req_lock); in drbd_adm_attach()
2096 spin_unlock_irq(&device->resource->req_lock); in drbd_adm_attach()
2114 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
2134 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_attach()
2178 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_detach()
2180 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_detach()
2372 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_net_opts()
2383 mutex_lock(&connection->resource->conf_update); in drbd_adm_net_opts()
2447 mutex_unlock(&connection->resource->conf_update); in drbd_adm_net_opts()
2462 mutex_unlock(&connection->resource->conf_update); in drbd_adm_net_opts()
2469 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_net_opts()
2504 struct drbd_resource *resource; in drbd_adm_connect() local
2526 for_each_resource(resource, &drbd_resources) { in drbd_adm_connect()
2527 for_each_connection(connection, resource) { in drbd_adm_connect()
2544 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2545 connection = first_connection(adm_ctx.resource); in drbd_adm_connect()
2581 mutex_lock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2585 mutex_unlock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2617 mutex_unlock(&adm_ctx.resource->conf_update); in drbd_adm_connect()
2630 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2639 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_connect()
2668 spin_lock_irq(&connection->resource->req_lock); in conn_try_disconnect()
2670 spin_unlock_irq(&connection->resource->req_lock); in conn_try_disconnect()
2737 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_disconnect()
2739 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_disconnect()
2785 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resize()
2857 mutex_lock(&device->resource->conf_update); in drbd_adm_resize()
2862 mutex_unlock(&device->resource->conf_update); in drbd_adm_resize()
2891 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resize()
2915 res_opts = adm_ctx.resource->res_opts; in drbd_adm_resource_opts()
2926 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resource_opts()
2927 err = set_resource_options(adm_ctx.resource, &res_opts); in drbd_adm_resource_opts()
2933 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resource_opts()
2958 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate()
2981 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate()
3000 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_simple_request_state()
3002 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_simple_request_state()
3036 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate_peer()
3062 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_invalidate_peer()
3080 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_pause_sync()
3083 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_pause_sync()
3101 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_sync()
3111 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_sync()
3134 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_io()
3172 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_resume_io()
3184 struct drbd_resource *resource, in nla_put_drbd_cfg_context() argument
3195 if (nla_put_string(skb, T_ctx_resource_name, resource->name)) in nla_put_drbd_cfg_context()
3237 struct drbd_resource *resource; in drbd_adm_dump_resources() local
3244 for_each_resource_rcu(resource, &drbd_resources) in drbd_adm_dump_resources()
3245 if (resource == (struct drbd_resource *)cb->args[0]) in drbd_adm_dump_resources()
3250 resource = list_entry(&drbd_resources, in drbd_adm_dump_resources()
3254 list_for_each_entry_continue_rcu(resource, &drbd_resources, resources) { in drbd_adm_dump_resources()
3269 err = nla_put_drbd_cfg_context(skb, resource, NULL, NULL); in drbd_adm_dump_resources()
3272 err = res_opts_to_skb(skb, &resource->res_opts, !capable(CAP_SYS_ADMIN)); in drbd_adm_dump_resources()
3275 resource_to_info(&resource_info, resource); in drbd_adm_dump_resources()
3279 resource_statistics.res_stat_write_ordering = resource->write_ordering; in drbd_adm_dump_resources()
3283 cb->args[0] = (long)resource; in drbd_adm_dump_resources()
3331 struct drbd_resource *resource = in put_resource_in_arg0() local
3333 kref_put(&resource->kref, drbd_destroy_resource); in put_resource_in_arg0()
3348 struct drbd_resource *resource; in drbd_adm_dump_devices() local
3356 resource = (struct drbd_resource *)cb->args[0]; in drbd_adm_dump_devices()
3361 resource = drbd_find_resource(nla_data(resource_filter)); in drbd_adm_dump_devices()
3362 if (!resource) in drbd_adm_dump_devices()
3364 cb->args[0] = (long)resource; in drbd_adm_dump_devices()
3370 idr_to_search = resource ? &resource->devices : &drbd_devices; in drbd_adm_dump_devices()
3394 err = nla_put_drbd_cfg_context(skb, device->resource, NULL, device); in drbd_adm_dump_devices()
3437 struct drbd_resource *resource = NULL, *next_resource; in drbd_adm_dump_connections() local
3445 resource = (struct drbd_resource *)cb->args[0]; in drbd_adm_dump_connections()
3450 resource = drbd_find_resource(nla_data(resource_filter)); in drbd_adm_dump_connections()
3451 if (!resource) in drbd_adm_dump_connections()
3453 cb->args[0] = (long)resource; in drbd_adm_dump_connections()
3457 if (!resource) { in drbd_adm_dump_connections()
3460 resource = list_first_entry(&drbd_resources, struct drbd_resource, resources); in drbd_adm_dump_connections()
3461 kref_get(&resource->kref); in drbd_adm_dump_connections()
3462 cb->args[0] = (long)resource; in drbd_adm_dump_connections()
3468 mutex_lock(&resource->conf_update); in drbd_adm_dump_connections()
3471 for_each_connection_rcu(connection, resource) in drbd_adm_dump_connections()
3477 connection = list_entry(&resource->connections, struct drbd_connection, connections); in drbd_adm_dump_connections()
3480 list_for_each_entry_continue_rcu(connection, &resource->connections, connections) { in drbd_adm_dump_connections()
3490 if (next_resource == resource) in drbd_adm_dump_connections()
3499 mutex_unlock(&resource->conf_update); in drbd_adm_dump_connections()
3500 kref_put(&resource->kref, drbd_destroy_resource); in drbd_adm_dump_connections()
3501 resource = next_resource; in drbd_adm_dump_connections()
3502 kref_get(&resource->kref); in drbd_adm_dump_connections()
3503 cb->args[0] = (long)resource; in drbd_adm_dump_connections()
3521 err = nla_put_drbd_cfg_context(skb, resource, connection, NULL); in drbd_adm_dump_connections()
3545 if (resource) in drbd_adm_dump_connections()
3546 mutex_unlock(&resource->conf_update); in drbd_adm_dump_connections()
3599 struct drbd_resource *resource; in drbd_adm_dump_peer_devices() local
3606 resource = (struct drbd_resource *)cb->args[0]; in drbd_adm_dump_peer_devices()
3611 resource = drbd_find_resource(nla_data(resource_filter)); in drbd_adm_dump_peer_devices()
3612 if (!resource) in drbd_adm_dump_peer_devices()
3615 cb->args[0] = (long)resource; in drbd_adm_dump_peer_devices()
3620 idr_to_search = resource ? &resource->devices : &drbd_devices; in drbd_adm_dump_peer_devices()
3665 err = nla_put_drbd_cfg_context(skb, device->resource, peer_device->connection, device); in drbd_adm_dump_peer_devices()
3691 static struct drbd_connection *the_only_connection(struct drbd_resource *resource) in the_only_connection() argument
3693 struct list_head *connections = &resource->connections; in the_only_connection()
3697 return list_first_entry(&resource->connections, struct drbd_connection, connections); in the_only_connection()
3703 struct drbd_resource *resource = device->resource; in nla_put_status_info() local
3727 if (nla_put_drbd_cfg_context(skb, resource, the_only_connection(resource), device)) in nla_put_status_info()
3730 if (res_opts_to_skb(skb, &device->resource->res_opts, exclude_sensitive)) in nla_put_status_info()
3852 struct drbd_resource *resource = NULL; in get_one_status() local
3884 resource = pos; in get_one_status()
3888 resource = pos; in get_one_status()
3892 if (resource) { in get_one_status()
3894 device = idr_get_next(&resource->devices, &volume); in get_one_status()
3898 pos = list_entry_rcu(resource->resources.next, in get_one_status()
3908 resource = pos; in get_one_status()
3927 connection = the_only_connection(resource); in get_one_status()
3928 if (nla_put_drbd_cfg_context(skb, resource, connection, NULL)) in get_one_status()
3941 D_ASSERT(device, device->resource == resource); in get_one_status()
3959 cb->args[1] = (pos == resource) ? volume + 1 : 0; in get_one_status()
3981 struct drbd_resource *resource; in drbd_adm_get_status_all() local
4012 resource = drbd_find_resource(resource_name); in drbd_adm_get_status_all()
4013 if (!resource) in drbd_adm_get_status_all()
4016 kref_put(&resource->kref, drbd_destroy_resource); /* get_one_status() revalidates the resource */ in drbd_adm_get_status_all()
4020 cb->args[0] = (long)resource; in drbd_adm_get_status_all()
4022 cb->args[2] = (long)resource; in drbd_adm_get_status_all()
4082 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_start_ov()
4095 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_start_ov()
4128 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_c_uuid()
4161 spin_lock_irq(&device->resource->req_lock); in drbd_adm_new_c_uuid()
4164 spin_unlock_irq(&device->resource->req_lock); in drbd_adm_new_c_uuid()
4173 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_c_uuid()
4197 struct drbd_resource *resource) in resource_to_info() argument
4199 info->res_role = conn_highest_role(first_connection(resource)); in resource_to_info()
4200 info->res_susp = resource->susp; in resource_to_info()
4201 info->res_susp_nod = resource->susp_nod; in resource_to_info()
4202 info->res_susp_fen = resource->susp_fen; in resource_to_info()
4231 if (adm_ctx.resource) { in drbd_adm_new_resource()
4249 resource_to_info(&resource_info, connection->resource); in drbd_adm_new_resource()
4250 notify_resource_state(NULL, 0, connection->resource, in drbd_adm_new_resource()
4300 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_minor()
4332 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_new_minor()
4348 first_connection(device->resource); in adm_del_minor()
4386 mutex_lock(&adm_ctx.resource->adm_mutex); in drbd_adm_del_minor()
4388 mutex_unlock(&adm_ctx.resource->adm_mutex); in drbd_adm_del_minor()
4394 static int adm_del_resource(struct drbd_resource *resource) in adm_del_resource() argument
4398 for_each_connection(connection, resource) { in adm_del_resource()
4402 if (!idr_is_empty(&resource->devices)) in adm_del_resource()
4409 notify_resource_state(NULL, 0, resource, NULL, NOTIFY_DESTROY); in adm_del_resource()
4413 list_del_rcu(&resource->resources); in adm_del_resource()
4417 list_for_each_entry(connection, &resource->connections, connections) in adm_del_resource()
4420 drbd_free_resource(resource); in adm_del_resource()
4427 struct drbd_resource *resource; in drbd_adm_down() local
4439 resource = adm_ctx.resource; in drbd_adm_down()
4440 mutex_lock(&resource->adm_mutex); in drbd_adm_down()
4442 for_each_connection(connection, resource) { in drbd_adm_down()
4461 idr_for_each_entry(&resource->devices, device, i) { in drbd_adm_down()
4470 idr_for_each_entry(&resource->devices, device, i) { in drbd_adm_down()
4479 retcode = adm_del_resource(resource); in drbd_adm_down()
4481 mutex_unlock(&resource->adm_mutex); in drbd_adm_down()
4490 struct drbd_resource *resource; in drbd_adm_del_resource() local
4498 resource = adm_ctx.resource; in drbd_adm_del_resource()
4500 mutex_lock(&resource->adm_mutex); in drbd_adm_del_resource()
4501 retcode = adm_del_resource(resource); in drbd_adm_del_resource()
4502 mutex_unlock(&resource->adm_mutex); in drbd_adm_del_resource()
4557 struct drbd_resource *resource, in notify_resource_state() argument
4581 if (nla_put_drbd_cfg_context(skb, resource, NULL, NULL) || in notify_resource_state()
4586 resource_statistics.res_stat_write_ordering = resource->write_ordering; in notify_resource_state()
4602 drbd_err(resource, "Error %d while broadcasting event. Event seq:%u\n", in notify_resource_state()
4633 if (nla_put_drbd_cfg_context(skb, device->resource, NULL, device) || in notify_device_state()
4683 if (nla_put_drbd_cfg_context(skb, connection->resource, connection, NULL) || in notify_connection_state()
4714 struct drbd_resource *resource = peer_device->device->resource; in notify_peer_device_state() local
4734 if (nla_put_drbd_cfg_context(skb, resource, peer_device->connection, peer_device->device) || in notify_peer_device_state()
4762 struct drbd_resource *resource = device ? device->resource : connection->resource; in notify_helper() local
4785 if (nla_put_drbd_cfg_context(skb, resource, connection, device) || in notify_helper()
4802 drbd_err(resource, "Error %d while broadcasting event. Event seq:%u\n", in notify_helper()
4868 err = notify_resource_state_change(skb, seq, state_change->resource, in get_initial_state()
4909 struct drbd_resource *resource; in drbd_adm_get_initial_state() local
4928 for_each_resource(resource, &drbd_resources) { in drbd_adm_get_initial_state()
4931 state_change = remember_old_state(resource, GFP_KERNEL); in drbd_adm_get_initial_state()