Lines Matching refs:spec

350 	struct rbd_spec		*spec;  member
430 static void rbd_spec_put(struct rbd_spec *spec);
501 else if (rbd_dev->spec && rbd_dev->spec->image_name) in rbd_warn()
503 RBD_DRV_NAME, rbd_dev->spec->image_name, &vaf); in rbd_warn()
504 else if (rbd_dev->spec && rbd_dev->spec->image_id) in rbd_warn()
506 RBD_DRV_NAME, rbd_dev->spec->image_id, &vaf); in rbd_warn()
591 if (rbd_dev->spec->snap_id != CEPH_NOSNAP && !ro) in rbd_ioctl_set_ro()
1146 u64 snap_id = rbd_dev->spec->snap_id; in rbd_dev_mapping_set()
2102 static void rbd_spec_put(struct rbd_spec *spec);
2191 img_request->snap_id = rbd_dev->spec->snap_id; in rbd_img_request_create()
3398 rbd_assert(rbd_dev->spec->snap_id == CEPH_NOSNAP); in rbd_queue_workfn()
3409 rbd_assert(rbd_dev->spec->snap_id != CEPH_NOSNAP); in rbd_queue_workfn()
3636 snap_id = rbd_dev->spec->snap_id; in rbd_exists_validate()
3691 if (rbd_dev->spec->snap_id == CEPH_NOSNAP) { in rbd_dev_refresh()
3863 return sprintf(buf, "%s\n", rbd_dev->spec->pool_name); in rbd_pool_show()
3872 (unsigned long long) rbd_dev->spec->pool_id); in rbd_pool_id_show()
3880 if (rbd_dev->spec->image_name) in rbd_name_show()
3881 return sprintf(buf, "%s\n", rbd_dev->spec->image_name); in rbd_name_show()
3891 return sprintf(buf, "%s\n", rbd_dev->spec->image_id); in rbd_image_id_show()
3904 return sprintf(buf, "%s\n", rbd_dev->spec->snap_name); in rbd_snap_show()
3923 struct rbd_spec *spec = rbd_dev->parent_spec; in rbd_parent_show() local
3931 spec->pool_id, spec->pool_name, in rbd_parent_show()
3932 spec->image_id, spec->image_name ?: "(unknown)", in rbd_parent_show()
3933 spec->snap_id, spec->snap_name, in rbd_parent_show()
4001 static struct rbd_spec *rbd_spec_get(struct rbd_spec *spec) in rbd_spec_get() argument
4003 kref_get(&spec->kref); in rbd_spec_get()
4005 return spec; in rbd_spec_get()
4009 static void rbd_spec_put(struct rbd_spec *spec) in rbd_spec_put() argument
4011 if (spec) in rbd_spec_put()
4012 kref_put(&spec->kref, rbd_spec_free); in rbd_spec_put()
4017 struct rbd_spec *spec; in rbd_spec_alloc() local
4019 spec = kzalloc(sizeof (*spec), GFP_KERNEL); in rbd_spec_alloc()
4020 if (!spec) in rbd_spec_alloc()
4023 spec->pool_id = CEPH_NOPOOL; in rbd_spec_alloc()
4024 spec->snap_id = CEPH_NOSNAP; in rbd_spec_alloc()
4025 kref_init(&spec->kref); in rbd_spec_alloc()
4027 return spec; in rbd_spec_alloc()
4032 struct rbd_spec *spec = container_of(kref, struct rbd_spec, kref); in rbd_spec_free() local
4034 kfree(spec->pool_name); in rbd_spec_free()
4035 kfree(spec->image_id); in rbd_spec_free()
4036 kfree(spec->image_name); in rbd_spec_free()
4037 kfree(spec->snap_name); in rbd_spec_free()
4038 kfree(spec); in rbd_spec_free()
4047 rbd_spec_put(rbd_dev->spec); in rbd_dev_release()
4061 struct rbd_spec *spec, in rbd_dev_create() argument
4082 rbd_dev->spec = spec; in rbd_dev_create()
4090 rbd_dev->layout.fl_pg_pool = cpu_to_le32((u32) spec->pool_id); in rbd_dev_create()
4257 snapid = cpu_to_le64(rbd_dev->spec->snap_id); in rbd_dev_v2_parent_info()
4410 rbd_assert(!rbd_dev->spec->image_name); in rbd_dev_image_name()
4412 len = strlen(rbd_dev->spec->image_id); in rbd_dev_image_name()
4420 ceph_encode_string(&p, end, rbd_dev->spec->image_id, (u32)len); in rbd_dev_image_name()
4508 struct rbd_spec *spec = rbd_dev->spec; in rbd_spec_fill_snap_id() local
4510 rbd_assert(spec->pool_id != CEPH_NOPOOL && spec->pool_name); in rbd_spec_fill_snap_id()
4511 rbd_assert(spec->image_id && spec->image_name); in rbd_spec_fill_snap_id()
4512 rbd_assert(spec->snap_name); in rbd_spec_fill_snap_id()
4514 if (strcmp(spec->snap_name, RBD_SNAP_HEAD_NAME)) { in rbd_spec_fill_snap_id()
4517 snap_id = rbd_snap_id_by_name(rbd_dev, spec->snap_name); in rbd_spec_fill_snap_id()
4521 spec->snap_id = snap_id; in rbd_spec_fill_snap_id()
4523 spec->snap_id = CEPH_NOSNAP; in rbd_spec_fill_snap_id()
4538 struct rbd_spec *spec = rbd_dev->spec; in rbd_spec_fill_names() local
4544 rbd_assert(spec->pool_id != CEPH_NOPOOL); in rbd_spec_fill_names()
4545 rbd_assert(spec->image_id); in rbd_spec_fill_names()
4546 rbd_assert(spec->snap_id != CEPH_NOSNAP); in rbd_spec_fill_names()
4550 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, spec->pool_id); in rbd_spec_fill_names()
4552 rbd_warn(rbd_dev, "no pool with id %llu", spec->pool_id); in rbd_spec_fill_names()
4567 snap_name = rbd_snap_name(rbd_dev, spec->snap_id); in rbd_spec_fill_names()
4573 spec->pool_name = pool_name; in rbd_spec_fill_names()
4574 spec->image_name = image_name; in rbd_spec_fill_names()
4575 spec->snap_name = snap_name; in rbd_spec_fill_names()
4876 struct rbd_spec *spec = NULL; in rbd_add_parse_args() local
4901 spec = rbd_spec_alloc(); in rbd_add_parse_args()
4902 if (!spec) in rbd_add_parse_args()
4905 spec->pool_name = dup_token(&buf, NULL); in rbd_add_parse_args()
4906 if (!spec->pool_name) in rbd_add_parse_args()
4908 if (!*spec->pool_name) { in rbd_add_parse_args()
4913 spec->image_name = dup_token(&buf, NULL); in rbd_add_parse_args()
4914 if (!spec->image_name) in rbd_add_parse_args()
4916 if (!*spec->image_name) { in rbd_add_parse_args()
4937 spec->snap_name = snap_name; in rbd_add_parse_args()
4959 *rbd_spec = spec; in rbd_add_parse_args()
4966 rbd_spec_put(spec); in rbd_add_parse_args()
5033 if (rbd_dev->spec->image_id) { in rbd_dev_image_id()
5034 rbd_dev->image_format = *rbd_dev->spec->image_id ? 2 : 1; in rbd_dev_image_id()
5043 size = sizeof (RBD_ID_PREFIX) + strlen(rbd_dev->spec->image_name); in rbd_dev_image_id()
5047 sprintf(object_name, "%s%s", RBD_ID_PREFIX, rbd_dev->spec->image_name); in rbd_dev_image_id()
5081 rbd_dev->spec->image_id = image_id; in rbd_dev_image_id()
5263 struct rbd_spec *spec = rbd_dev->spec; in rbd_dev_header_name() local
5271 size = strlen(spec->image_name) + sizeof (RBD_SUFFIX); in rbd_dev_header_name()
5273 size = sizeof (RBD_HEADER_PREFIX) + strlen(spec->image_id); in rbd_dev_header_name()
5281 spec->image_name, RBD_SUFFIX); in rbd_dev_header_name()
5284 RBD_HEADER_PREFIX, spec->image_id); in rbd_dev_header_name()
5294 kfree(rbd_dev->spec->image_id); in rbd_dev_image_release()
5295 rbd_dev->spec->image_id = NULL; in rbd_dev_image_release()
5329 rbd_dev->spec->pool_name, in rbd_dev_image_probe()
5330 rbd_dev->spec->image_name); in rbd_dev_image_probe()
5352 rbd_dev->spec->pool_name, in rbd_dev_image_probe()
5353 rbd_dev->spec->image_name, in rbd_dev_image_probe()
5354 rbd_dev->spec->snap_name); in rbd_dev_image_probe()
5390 kfree(rbd_dev->spec->image_id); in rbd_dev_image_probe()
5391 rbd_dev->spec->image_id = NULL; in rbd_dev_image_probe()
5402 struct rbd_spec *spec = NULL; in do_rbd_add() local
5411 rc = rbd_add_parse_args(buf, &ceph_opts, &rbd_opts, &spec); in do_rbd_add()
5422 rc = rbd_add_get_pool_id(rbdc, spec->pool_name); in do_rbd_add()
5425 pr_info("pool %s does not exist\n", spec->pool_name); in do_rbd_add()
5428 spec->pool_id = (u64)rc; in do_rbd_add()
5432 if (spec->pool_id > (u64)U32_MAX) { in do_rbd_add()
5434 (unsigned long long)spec->pool_id, U32_MAX); in do_rbd_add()
5439 rbd_dev = rbd_dev_create(rbdc, spec, rbd_opts); in do_rbd_add()
5445 spec = NULL; /* rbd_dev now owns this */ in do_rbd_add()
5455 if (rbd_dev->spec->snap_id != CEPH_NOSNAP) in do_rbd_add()
5481 rbd_spec_put(spec); in do_rbd_add()