int connect_to_cluster(rados_t *pcluster) { int r; r = rados_create(pcluster, NULL); if (r < 0) { simple_err("Could not create cluster handle", r); return r; } rados_conf_parse_env(*pcluster, NULL); r = rados_conf_read_file(*pcluster, rbd_options.ceph_config); if (r < 0) { simple_err("Error reading Ceph config file", r); goto failed_shutdown; } r = rados_connect(*pcluster); if (r < 0) { simple_err("Error connecting to cluster", r); goto failed_shutdown; } return 0; failed_shutdown: rados_shutdown(*pcluster); return r; }
static tgtadm_err bs_rbd_init(struct scsi_lu *lu) { tgtadm_err ret = TGTADM_UNKNOWN_ERR; int rados_ret; struct bs_thread_info *info = BS_THREAD_I(lu); rados_ret = rados_create(&cluster, NULL); if (rados_ret < 0) { eprintf("bs_rbd_init: rados_create: %d\n", rados_ret); return ret; } /* read config from environment and then default files */ rados_ret = rados_conf_parse_env(cluster, NULL); if (rados_ret < 0) { eprintf("bs_rbd_init: rados_conf_parse_env: %d\n", rados_ret); goto fail; } rados_ret = rados_conf_read_file(cluster, NULL); if (rados_ret < 0) { eprintf("bs_rbd_init: rados_conf_read_file: %d\n", rados_ret); goto fail; } rados_ret = rados_connect(cluster); if (rados_ret < 0) { eprintf("bs_rbd_init: rados_connect: %d\n", rados_ret); goto fail; } ret = bs_thread_open(info, bs_rbd_request, nr_iothreads); if (ret == TGTADM_SUCCESS) return ret; fail: rados_shutdown(&cluster); return ret; }
int create_image() { int r; int order = 0; r = rados_create(&cluster, NULL); if (r < 0) { simple_err("Could not create cluster handle", r); return r; } rados_conf_parse_env(cluster, NULL); r = rados_conf_read_file(cluster, NULL); if (r < 0) { simple_err("Error reading ceph config file", r); goto failed_shutdown; } r = rados_connect(cluster); if (r < 0) { simple_err("Error connecting to cluster", r); goto failed_shutdown; } r = krbd_create_from_context(rados_cct(cluster), &krbd); if (r < 0) { simple_err("Could not create libkrbd handle", r); goto failed_shutdown; } r = rados_pool_create(cluster, pool); if (r < 0 && r != -EEXIST) { simple_err("Error creating pool", r); goto failed_krbd; } r = rados_ioctx_create(cluster, pool, &ioctx); if (r < 0) { simple_err("Error creating ioctx", r); goto failed_krbd; } if (clone_calls) { r = rbd_create2(ioctx, iname, 0, RBD_FEATURE_LAYERING, &order); } else { r = rbd_create(ioctx, iname, 0, &order); } if (r < 0) { simple_err("Error creating image", r); goto failed_open; } return 0; failed_open: rados_ioctx_destroy(ioctx); failed_krbd: krbd_destroy(krbd); failed_shutdown: rados_shutdown(cluster); return r; }
int create_image() { int r; rados_t cluster; int order = 0; r = rados_create(&cluster, NULL); if (r < 0) { simple_err("Could not create cluster handle", r); return r; } rados_conf_parse_env(cluster, NULL); r = rados_conf_read_file(cluster, NULL); if (r < 0) { simple_err("Error reading ceph config file", r); goto failed_shutdown; } r = rados_connect(cluster); if (r < 0) { simple_err("Error connecting to cluster", r); goto failed_shutdown; } r = rados_pool_create(cluster, pool); if (r < 0 && r != -EEXIST) { simple_err("Error creating pool", r); goto failed_shutdown; } r = rados_ioctx_create(cluster, pool, &ioctx); if (r < 0) { simple_err("Error creating ioctx", r); goto failed_shutdown; } r = rbd_create(ioctx, iname, 0, &order); if (r < 0) { simple_err("Error creating image", r); goto failed_open; } return 0; failed_open: rados_ioctx_destroy(ioctx); failed_shutdown: rados_shutdown(cluster); return r; }