Lines Matching refs:resource
199 spin_lock_irq(&connection->resource->req_lock); in tl_release()
256 spin_unlock_irq(&connection->resource->req_lock); in tl_release()
261 spin_unlock_irq(&connection->resource->req_lock); in tl_release()
285 spin_lock_irq(&connection->resource->req_lock); in tl_restart()
287 spin_unlock_irq(&connection->resource->req_lock); in tl_restart()
312 spin_lock_irq(&connection->resource->req_lock); in tl_abort_disk_io()
320 spin_unlock_irq(&connection->resource->req_lock); in tl_abort_disk_io()
326 struct drbd_resource *resource = thi->resource; in drbd_thread_setup() local
332 resource->name); in drbd_thread_setup()
350 drbd_info(resource, "Restarting %s thread\n", thi->name); in drbd_thread_setup()
362 drbd_info(resource, "Terminating %s\n", current->comm); in drbd_thread_setup()
368 kref_put(&resource->kref, drbd_destroy_resource); in drbd_thread_setup()
373 static void drbd_thread_init(struct drbd_resource *resource, struct drbd_thread *thi, in drbd_thread_init() argument
380 thi->resource = resource; in drbd_thread_init()
387 struct drbd_resource *resource = thi->resource; in drbd_thread_start() local
397 drbd_info(resource, "Starting %s thread (from %s [%d])\n", in drbd_thread_start()
402 drbd_err(resource, "Failed to get module reference in drbd_thread_start\n"); in drbd_thread_start()
407 kref_get(&resource->kref); in drbd_thread_start()
418 "drbd_%c_%s", thi->name[0], thi->resource->name); in drbd_thread_start()
421 drbd_err(resource, "Couldn't start thread\n"); in drbd_thread_start()
425 kref_put(&resource->kref, drbd_destroy_resource); in drbd_thread_start()
437 drbd_info(resource, "Restarting %s thread (from %s [%d])\n", in drbd_thread_start()
513 struct drbd_resource *resource; in drbd_calc_cpu_mask() local
517 for_each_resource_rcu(resource, &drbd_resources) { in drbd_calc_cpu_mask()
518 for_each_cpu(cpu, resource->cpu_mask) in drbd_calc_cpu_mask()
547 struct drbd_resource *resource = thi->resource; in drbd_thread_current_set_cpu() local
553 set_cpus_allowed_ptr(p, resource->cpu_mask); in drbd_thread_current_set_cpu()
1864 spin_lock_irqsave(&device->resource->req_lock, flags); in drbd_open()
1877 spin_unlock_irqrestore(&device->resource->req_lock, flags); in drbd_open()
2167 struct drbd_resource *resource = device->resource; in drbd_destroy_device() local
2209 kref_put(&resource->kref, drbd_destroy_resource); in drbd_destroy_device()
2294 struct drbd_resource *resource = in drbd_destroy_resource() local
2297 idr_destroy(&resource->devices); in drbd_destroy_resource()
2298 free_cpumask_var(resource->cpu_mask); in drbd_destroy_resource()
2299 kfree(resource->name); in drbd_destroy_resource()
2300 memset(resource, 0xf2, sizeof(*resource)); in drbd_destroy_resource()
2301 kfree(resource); in drbd_destroy_resource()
2304 void drbd_free_resource(struct drbd_resource *resource) in drbd_free_resource() argument
2308 for_each_connection_safe(connection, tmp, resource) { in drbd_free_resource()
2313 drbd_debugfs_resource_cleanup(resource); in drbd_free_resource()
2314 kref_put(&resource->kref, drbd_destroy_resource); in drbd_free_resource()
2321 struct drbd_resource *resource, *tmp; in drbd_cleanup() local
2344 for_each_resource_safe(resource, tmp, &drbd_resources) { in drbd_cleanup()
2345 list_del(&resource->resources); in drbd_cleanup()
2346 drbd_free_resource(resource); in drbd_cleanup()
2446 struct drbd_resource *resource; in drbd_find_resource() local
2452 for_each_resource_rcu(resource, &drbd_resources) { in drbd_find_resource()
2453 if (!strcmp(resource->name, name)) { in drbd_find_resource()
2454 kref_get(&resource->kref); in drbd_find_resource()
2458 resource = NULL; in drbd_find_resource()
2461 return resource; in drbd_find_resource()
2467 struct drbd_resource *resource; in conn_get_by_addrs() local
2471 for_each_resource_rcu(resource, &drbd_resources) { in conn_get_by_addrs()
2472 for_each_connection_rcu(connection, resource) { in conn_get_by_addrs()
2526 int set_resource_options(struct drbd_resource *resource, struct res_opts *res_opts) in set_resource_options() argument
2545 drbd_warn(resource, "Overflow in bitmap_parse(%.12s%s), truncating to %u bits\n", in set_resource_options()
2554 drbd_warn(resource, "bitmap_parse() failed with %d\n", err); in set_resource_options()
2559 resource->res_opts = *res_opts; in set_resource_options()
2562 if (!cpumask_equal(resource->cpu_mask, new_cpu_mask)) { in set_resource_options()
2563 cpumask_copy(resource->cpu_mask, new_cpu_mask); in set_resource_options()
2564 for_each_connection_rcu(connection, resource) { in set_resource_options()
2580 struct drbd_resource *resource; in drbd_create_resource() local
2582 resource = kzalloc(sizeof(struct drbd_resource), GFP_KERNEL); in drbd_create_resource()
2583 if (!resource) in drbd_create_resource()
2585 resource->name = kstrdup(name, GFP_KERNEL); in drbd_create_resource()
2586 if (!resource->name) in drbd_create_resource()
2588 if (!zalloc_cpumask_var(&resource->cpu_mask, GFP_KERNEL)) in drbd_create_resource()
2590 kref_init(&resource->kref); in drbd_create_resource()
2591 idr_init(&resource->devices); in drbd_create_resource()
2592 INIT_LIST_HEAD(&resource->connections); in drbd_create_resource()
2593 resource->write_ordering = WO_bdev_flush; in drbd_create_resource()
2594 list_add_tail_rcu(&resource->resources, &drbd_resources); in drbd_create_resource()
2595 mutex_init(&resource->conf_update); in drbd_create_resource()
2596 mutex_init(&resource->adm_mutex); in drbd_create_resource()
2597 spin_lock_init(&resource->req_lock); in drbd_create_resource()
2598 drbd_debugfs_resource_add(resource); in drbd_create_resource()
2599 return resource; in drbd_create_resource()
2602 kfree(resource->name); in drbd_create_resource()
2604 kfree(resource); in drbd_create_resource()
2612 struct drbd_resource *resource; in conn_create() local
2638 resource = drbd_create_resource(name); in conn_create()
2639 if (!resource) in conn_create()
2651 drbd_thread_init(resource, &connection->receiver, drbd_receiver, "receiver"); in conn_create()
2653 drbd_thread_init(resource, &connection->worker, drbd_worker, "worker"); in conn_create()
2655 drbd_thread_init(resource, &connection->asender, drbd_asender, "asender"); in conn_create()
2660 connection->resource = resource; in conn_create()
2662 if (set_resource_options(resource, res_opts)) in conn_create()
2665 kref_get(&resource->kref); in conn_create()
2666 list_add_tail_rcu(&connection->connections, &resource->connections); in conn_create()
2671 list_del(&resource->resources); in conn_create()
2672 drbd_free_resource(resource); in conn_create()
2684 struct drbd_resource *resource = connection->resource; in drbd_destroy_connection() local
2698 kref_put(&resource->kref, drbd_destroy_resource); in drbd_destroy_connection()
2717 struct drbd_resource *resource = adm_ctx->resource; in drbd_create_device() local
2737 kref_get(&resource->kref); in drbd_create_device()
2738 device->resource = resource; in drbd_create_device()
2777 q->queue_lock = &resource->req_lock; in drbd_create_device()
2796 id = idr_alloc(&resource->devices, device, vnr, vnr + 1, GFP_KERNEL); in drbd_create_device()
2806 for_each_connection(connection, resource) { in drbd_create_device()
2833 device->state.conn = first_connection(resource)->cstate; in drbd_create_device()
2847 for_each_connection(connection, resource) { in drbd_create_device()
2858 idr_remove(&resource->devices, vnr); in drbd_create_device()
2871 kref_put(&resource->kref, drbd_destroy_resource); in drbd_create_device()
2878 struct drbd_resource *resource = device->resource; in drbd_delete_device() local
2887 for_each_connection(connection, resource) { in drbd_delete_device()
2891 idr_remove(&resource->devices, device->vnr); in drbd_delete_device()
3344 spin_lock_irq(&device->resource->req_lock); in drbd_md_read()
3351 spin_unlock_irq(&device->resource->req_lock); in drbd_md_read()
3579 spin_lock_irq(&device->resource->req_lock); in drbd_queue_bitmap_io()
3586 spin_unlock_irq(&device->resource->req_lock); in drbd_queue_bitmap_io()
3738 spin_unlock_irq(&device->resource->req_lock); in drbd_wait_misc()
3741 spin_lock_irq(&device->resource->req_lock); in drbd_wait_misc()