Lines Matching defs:resource

191 	spin_lock_irq(&connection->resource->req_lock);
251 spin_unlock_irq(&connection->resource->req_lock);
256 spin_unlock_irq(&connection->resource->req_lock);
269 /* must hold resource->req_lock */
280 spin_lock_irq(&connection->resource->req_lock);
282 spin_unlock_irq(&connection->resource->req_lock);
307 spin_lock_irq(&connection->resource->req_lock);
315 spin_unlock_irq(&connection->resource->req_lock);
321 struct drbd_resource *resource = thi->resource;
327 resource->name);
347 drbd_info(resource, "Restarting %s thread\n", thi->name);
359 drbd_info(resource, "Terminating %s\n", current->comm);
365 kref_put(&resource->kref, drbd_destroy_resource);
370 static void drbd_thread_init(struct drbd_resource *resource, struct drbd_thread *thi,
377 thi->resource = resource;
384 struct drbd_resource *resource = thi->resource;
394 drbd_info(resource, "Starting %s thread (from %s [%d])\n",
399 drbd_err(resource, "Failed to get module reference in drbd_thread_start\n");
404 kref_get(&resource->kref);
415 "drbd_%c_%s", thi->name[0], thi->resource->name);
418 drbd_err(resource, "Couldn't start thread\n");
422 kref_put(&resource->kref, drbd_destroy_resource);
434 drbd_info(resource, "Restarting %s thread (from %s [%d])\n",
501 * Forces all threads of a resource onto the same CPU. This is beneficial for
511 struct drbd_resource *resource;
515 for_each_resource_rcu(resource, &drbd_resources) {
516 for_each_cpu(cpu, resource->cpu_mask)
545 struct drbd_resource *resource = thi->resource;
551 set_cpus_allowed_ptr(p, resource->cpu_mask);
1926 spin_lock_irqsave(&device->resource->req_lock, flags);
1939 spin_unlock_irqrestore(&device->resource->req_lock, flags);
1953 /* need to hold resource->req_lock */
2230 struct drbd_resource *resource = device->resource;
2260 /* not for_each_connection(connection, resource):
2269 kref_put(&resource->kref, drbd_destroy_resource);
2324 * resource (replication group) or per device (minor) retry
2336 * holds resource->req_lock */
2354 struct drbd_resource *resource =
2357 idr_destroy(&resource->devices);
2358 free_cpumask_var(resource->cpu_mask);
2359 kfree(resource->name);
2360 memset(resource, 0xf2, sizeof(*resource));
2361 kfree(resource);
2364 void drbd_free_resource(struct drbd_resource *resource)
2368 for_each_connection_safe(connection, tmp, resource) {
2373 drbd_debugfs_resource_cleanup(resource);
2374 kref_put(&resource->kref, drbd_destroy_resource);
2381 struct drbd_resource *resource, *tmp;
2403 for_each_resource_safe(resource, tmp, &drbd_resources) {
2404 list_del(&resource->resources);
2405 drbd_free_resource(resource);
2451 struct drbd_resource *resource;
2457 for_each_resource_rcu(resource, &drbd_resources) {
2458 if (!strcmp(resource->name, name)) {
2459 kref_get(&resource->kref);
2463 resource = NULL;
2466 return resource;
2472 struct drbd_resource *resource;
2476 for_each_resource_rcu(resource, &drbd_resources) {
2477 for_each_connection_rcu(connection, resource) {
2531 int set_resource_options(struct drbd_resource *resource, struct res_opts *res_opts)
2550 drbd_warn(resource, "Overflow in bitmap_parse(%.12s%s), truncating to %u bits\n",
2559 drbd_warn(resource, "bitmap_parse() failed with %d\n", err);
2564 resource->res_opts = *res_opts;
2567 if (!cpumask_equal(resource->cpu_mask, new_cpu_mask)) {
2568 cpumask_copy(resource->cpu_mask, new_cpu_mask);
2569 for_each_connection_rcu(connection, resource) {
2585 struct drbd_resource *resource;
2587 resource = kzalloc(sizeof(struct drbd_resource), GFP_KERNEL);
2588 if (!resource)
2590 resource->name = kstrdup(name, GFP_KERNEL);
2591 if (!resource->name)
2593 if (!zalloc_cpumask_var(&resource->cpu_mask, GFP_KERNEL))
2595 kref_init(&resource->kref);
2596 idr_init(&resource->devices);
2597 INIT_LIST_HEAD(&resource->connections);
2598 resource->write_ordering = WO_BDEV_FLUSH;
2599 list_add_tail_rcu(&resource->resources, &drbd_resources);
2600 mutex_init(&resource->conf_update);
2601 mutex_init(&resource->adm_mutex);
2602 spin_lock_init(&resource->req_lock);
2603 drbd_debugfs_resource_add(resource);
2604 return resource;
2607 kfree(resource->name);
2609 kfree(resource);
2617 struct drbd_resource *resource;
2643 resource = drbd_create_resource(name);
2644 if (!resource)
2656 drbd_thread_init(resource, &connection->receiver, drbd_receiver, "receiver");
2658 drbd_thread_init(resource, &connection->worker, drbd_worker, "worker");
2660 drbd_thread_init(resource, &connection->ack_receiver, drbd_ack_receiver, "ack_recv");
2665 connection->resource = resource;
2667 if (set_resource_options(resource, res_opts))
2670 kref_get(&resource->kref);
2671 list_add_tail_rcu(&connection->connections, &resource->connections);
2676 list_del(&resource->resources);
2677 drbd_free_resource(resource);
2689 struct drbd_resource *resource = connection->resource;
2703 kref_put(&resource->kref, drbd_destroy_resource);
2722 struct drbd_resource *resource = adm_ctx->resource;
2742 kref_get(&resource->kref);
2743 device->resource = resource;
2790 id = idr_alloc(&resource->devices, device, vnr, vnr + 1, GFP_KERNEL);
2800 for_each_connection(connection, resource) {
2828 device->state.conn = first_connection(resource)->cstate;
2840 for_each_connection_safe(connection, n, resource) {
2849 idr_remove(&resource->devices, vnr);
2862 kref_put(&resource->kref, drbd_destroy_resource);
2869 struct drbd_resource *resource = device->resource;
2877 for_each_connection(connection, resource) {
2881 idr_remove(&resource->devices, device->vnr);
3328 spin_lock_irq(&device->resource->req_lock);
3335 spin_unlock_irq(&device->resource->req_lock);
3557 spin_lock_irq(&device->resource->req_lock);
3566 spin_unlock_irq(&device->resource->req_lock);
3725 spin_unlock_irq(&device->resource->req_lock);
3728 spin_lock_irq(&device->resource->req_lock);
3738 struct drbd_resource *resource;
3743 for_each_resource(resource, &drbd_resources)
3744 spin_lock_nested(&resource->req_lock, i++);
3749 struct drbd_resource *resource;
3751 for_each_resource(resource, &drbd_resources)
3752 spin_unlock(&resource->req_lock);