Lines Matching refs:spec
350 struct rbd_spec *spec; member
431 static void rbd_spec_put(struct rbd_spec *spec);
502 else if (rbd_dev->spec && rbd_dev->spec->image_name) in rbd_warn()
504 RBD_DRV_NAME, rbd_dev->spec->image_name, &vaf); in rbd_warn()
505 else if (rbd_dev->spec && rbd_dev->spec->image_id) in rbd_warn()
507 RBD_DRV_NAME, rbd_dev->spec->image_id, &vaf); in rbd_warn()
592 if (rbd_dev->spec->snap_id != CEPH_NOSNAP && !ro) in rbd_ioctl_set_ro()
1144 u64 snap_id = rbd_dev->spec->snap_id; in rbd_dev_mapping_set()
2081 static void rbd_spec_put(struct rbd_spec *spec);
2170 img_request->snap_id = rbd_dev->spec->snap_id; in rbd_img_request_create()
3373 rbd_assert(rbd_dev->spec->snap_id == CEPH_NOSNAP); in rbd_queue_workfn()
3384 rbd_assert(rbd_dev->spec->snap_id != CEPH_NOSNAP); in rbd_queue_workfn()
3657 snap_id = rbd_dev->spec->snap_id; in rbd_exists_validate()
3712 if (rbd_dev->spec->snap_id == CEPH_NOSNAP) { in rbd_dev_refresh()
3884 return sprintf(buf, "%s\n", rbd_dev->spec->pool_name); in rbd_pool_show()
3893 (unsigned long long) rbd_dev->spec->pool_id); in rbd_pool_id_show()
3901 if (rbd_dev->spec->image_name) in rbd_name_show()
3902 return sprintf(buf, "%s\n", rbd_dev->spec->image_name); in rbd_name_show()
3912 return sprintf(buf, "%s\n", rbd_dev->spec->image_id); in rbd_image_id_show()
3925 return sprintf(buf, "%s\n", rbd_dev->spec->snap_name); in rbd_snap_show()
3944 struct rbd_spec *spec = rbd_dev->parent_spec; in rbd_parent_show() local
3952 spec->pool_id, spec->pool_name, in rbd_parent_show()
3953 spec->image_id, spec->image_name ?: "(unknown)", in rbd_parent_show()
3954 spec->snap_id, spec->snap_name, in rbd_parent_show()
4024 static struct rbd_spec *rbd_spec_get(struct rbd_spec *spec) in rbd_spec_get() argument
4026 kref_get(&spec->kref); in rbd_spec_get()
4028 return spec; in rbd_spec_get()
4032 static void rbd_spec_put(struct rbd_spec *spec) in rbd_spec_put() argument
4034 if (spec) in rbd_spec_put()
4035 kref_put(&spec->kref, rbd_spec_free); in rbd_spec_put()
4040 struct rbd_spec *spec; in rbd_spec_alloc() local
4042 spec = kzalloc(sizeof (*spec), GFP_KERNEL); in rbd_spec_alloc()
4043 if (!spec) in rbd_spec_alloc()
4046 spec->pool_id = CEPH_NOPOOL; in rbd_spec_alloc()
4047 spec->snap_id = CEPH_NOSNAP; in rbd_spec_alloc()
4048 kref_init(&spec->kref); in rbd_spec_alloc()
4050 return spec; in rbd_spec_alloc()
4055 struct rbd_spec *spec = container_of(kref, struct rbd_spec, kref); in rbd_spec_free() local
4057 kfree(spec->pool_name); in rbd_spec_free()
4058 kfree(spec->image_id); in rbd_spec_free()
4059 kfree(spec->image_name); in rbd_spec_free()
4060 kfree(spec->snap_name); in rbd_spec_free()
4061 kfree(spec); in rbd_spec_free()
4065 struct rbd_spec *spec) in rbd_dev_create() argument
4079 rbd_dev->spec = spec; in rbd_dev_create()
4087 rbd_dev->layout.fl_pg_pool = cpu_to_le32((u32) spec->pool_id); in rbd_dev_create()
4095 rbd_spec_put(rbd_dev->spec); in rbd_dev_destroy()
4247 snapid = cpu_to_le64(rbd_dev->spec->snap_id); in rbd_dev_v2_parent_info()
4400 rbd_assert(!rbd_dev->spec->image_name); in rbd_dev_image_name()
4402 len = strlen(rbd_dev->spec->image_id); in rbd_dev_image_name()
4410 ceph_encode_string(&p, end, rbd_dev->spec->image_id, (u32)len); in rbd_dev_image_name()
4498 struct rbd_spec *spec = rbd_dev->spec; in rbd_spec_fill_snap_id() local
4500 rbd_assert(spec->pool_id != CEPH_NOPOOL && spec->pool_name); in rbd_spec_fill_snap_id()
4501 rbd_assert(spec->image_id && spec->image_name); in rbd_spec_fill_snap_id()
4502 rbd_assert(spec->snap_name); in rbd_spec_fill_snap_id()
4504 if (strcmp(spec->snap_name, RBD_SNAP_HEAD_NAME)) { in rbd_spec_fill_snap_id()
4507 snap_id = rbd_snap_id_by_name(rbd_dev, spec->snap_name); in rbd_spec_fill_snap_id()
4511 spec->snap_id = snap_id; in rbd_spec_fill_snap_id()
4513 spec->snap_id = CEPH_NOSNAP; in rbd_spec_fill_snap_id()
4528 struct rbd_spec *spec = rbd_dev->spec; in rbd_spec_fill_names() local
4534 rbd_assert(spec->pool_id != CEPH_NOPOOL); in rbd_spec_fill_names()
4535 rbd_assert(spec->image_id); in rbd_spec_fill_names()
4536 rbd_assert(spec->snap_id != CEPH_NOSNAP); in rbd_spec_fill_names()
4540 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, spec->pool_id); in rbd_spec_fill_names()
4542 rbd_warn(rbd_dev, "no pool with id %llu", spec->pool_id); in rbd_spec_fill_names()
4557 snap_name = rbd_snap_name(rbd_dev, spec->snap_id); in rbd_spec_fill_names()
4563 spec->pool_name = pool_name; in rbd_spec_fill_names()
4564 spec->image_name = image_name; in rbd_spec_fill_names()
4565 spec->snap_name = snap_name; in rbd_spec_fill_names()
4884 struct rbd_spec *spec = NULL; in rbd_add_parse_args() local
4909 spec = rbd_spec_alloc(); in rbd_add_parse_args()
4910 if (!spec) in rbd_add_parse_args()
4913 spec->pool_name = dup_token(&buf, NULL); in rbd_add_parse_args()
4914 if (!spec->pool_name) in rbd_add_parse_args()
4916 if (!*spec->pool_name) { in rbd_add_parse_args()
4921 spec->image_name = dup_token(&buf, NULL); in rbd_add_parse_args()
4922 if (!spec->image_name) in rbd_add_parse_args()
4924 if (!*spec->image_name) { in rbd_add_parse_args()
4945 spec->snap_name = snap_name; in rbd_add_parse_args()
4966 *rbd_spec = spec; in rbd_add_parse_args()
4973 rbd_spec_put(spec); in rbd_add_parse_args()
5039 if (rbd_dev->spec->image_id) { in rbd_dev_image_id()
5040 rbd_dev->image_format = *rbd_dev->spec->image_id ? 2 : 1; in rbd_dev_image_id()
5049 size = sizeof (RBD_ID_PREFIX) + strlen(rbd_dev->spec->image_name); in rbd_dev_image_id()
5053 sprintf(object_name, "%s%s", RBD_ID_PREFIX, rbd_dev->spec->image_name); in rbd_dev_image_id()
5087 rbd_dev->spec->image_id = image_id; in rbd_dev_image_id()
5269 struct rbd_spec *spec = rbd_dev->spec; in rbd_dev_header_name() local
5277 size = strlen(spec->image_name) + sizeof (RBD_SUFFIX); in rbd_dev_header_name()
5279 size = sizeof (RBD_HEADER_PREFIX) + strlen(spec->image_id); in rbd_dev_header_name()
5287 spec->image_name, RBD_SUFFIX); in rbd_dev_header_name()
5290 RBD_HEADER_PREFIX, spec->image_id); in rbd_dev_header_name()
5300 kfree(rbd_dev->spec->image_id); in rbd_dev_image_release()
5301 rbd_dev->spec->image_id = NULL; in rbd_dev_image_release()
5335 rbd_dev->spec->pool_name, in rbd_dev_image_probe()
5336 rbd_dev->spec->image_name); in rbd_dev_image_probe()
5358 rbd_dev->spec->pool_name, in rbd_dev_image_probe()
5359 rbd_dev->spec->image_name, in rbd_dev_image_probe()
5360 rbd_dev->spec->snap_name); in rbd_dev_image_probe()
5396 kfree(rbd_dev->spec->image_id); in rbd_dev_image_probe()
5397 rbd_dev->spec->image_id = NULL; in rbd_dev_image_probe()
5408 struct rbd_spec *spec = NULL; in do_rbd_add() local
5417 rc = rbd_add_parse_args(buf, &ceph_opts, &rbd_opts, &spec); in do_rbd_add()
5431 rc = rbd_add_get_pool_id(rbdc, spec->pool_name); in do_rbd_add()
5434 pr_info("pool %s does not exist\n", spec->pool_name); in do_rbd_add()
5437 spec->pool_id = (u64)rc; in do_rbd_add()
5441 if (spec->pool_id > (u64)U32_MAX) { in do_rbd_add()
5443 (unsigned long long)spec->pool_id, U32_MAX); in do_rbd_add()
5448 rbd_dev = rbd_dev_create(rbdc, spec); in do_rbd_add()
5452 spec = NULL; /* rbd_dev now owns this */ in do_rbd_add()
5460 if (rbd_dev->spec->snap_id != CEPH_NOSNAP) in do_rbd_add()
5483 rbd_spec_put(spec); in do_rbd_add()