From: Sage Weil Date: Tue, 22 Feb 2011 21:15:23 +0000 (-0800) Subject: librbd: stack on top of librados X-Git-Tag: v0.25~45^2~38 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b2ceebf4e31c0f16b1e428535062a3c5d6fa0954;p=ceph.git librbd: stack on top of librados --- diff --git a/src/include/rbd/librbd.h b/src/include/rbd/librbd.h index 228dd75a5355..4222b9f69fff 100644 --- a/src/include/rbd/librbd.h +++ b/src/include/rbd/librbd.h @@ -35,7 +35,6 @@ extern "C" { #define LIBRBD_SUPPORTS_WATCH 0 typedef void *rbd_snap_t; -typedef void *rbd_pool_t; typedef void *rbd_image_t; typedef struct { @@ -44,45 +43,41 @@ typedef struct { const char *name; } rbd_snap_info_t; +#define RBD_MAX_IMAGE_NAME_SIZE 96 +#define RBD_MAX_BLOCK_NAME_SIZE 24 + typedef struct { uint64_t size; uint64_t obj_size; uint64_t num_objs; int order; + char block_name_prefix[RBD_MAX_BLOCK_NAME_SIZE]; + int parent_pool; /* -1 if none */ + char parent_name[RBD_MAX_IMAGE_NAME_SIZE]; /* blank if none */ } rbd_image_info_t; -/* initialization */ -int rbd_initialize(int argc, const char **argv); /* arguments are optional */ -void rbd_shutdown(void); - -void librbd_version(int *major, int *minor, int *extra); - -/* pools */ -int rbd_open_pool(const char *pool_name, rbd_pool_t *pool); -int rbd_close_pool(rbd_pool_t pool); +void rbd_version(int *major, int *minor, int *extra); /* images */ -int rbd_list(rbd_pool_t pool, char *names, size_t *size); -int rbd_create(rbd_pool_t pool, const char *name, size_t size, int *order); -int rbd_remove(rbd_pool_t pool, const char *name); -int rbd_copy(rbd_pool_t src_pool, const char *srcname, rbd_pool_t dest_pool, const char *destname); -int rbd_rename(rbd_pool_t src_pool, const char *srcname, const char *destname); - -int rbd_open_image(rbd_pool_t pool, const char *name, rbd_image_t *image, const char *snap_name); -int rbd_close_image(rbd_image_t image); +int rbd_list(rados_pool_t pool, char *names, size_t *size); +int rbd_create(rados_pool_t pool, const char *name, size_t size, int *order); +int rbd_remove(rados_pool_t pool, const char *name); +int rbd_copy(rados_pool_t src_pool, const char *srcname, rados_pool_t dest_pool, const char *destname); +int rbd_rename(rados_pool_t src_pool, const char *srcname, const char *destname); + +int rbd_open(rados_pool_t pool, const char *name, rbd_image_t *image, const char *snap_name); +int rbd_close(rbd_image_t image); int rbd_resize(rbd_image_t image, size_t size); -int rbd_stat(rbd_image_t image, rbd_image_info_t *info); +int rbd_stat(rbd_image_t image, rbd_image_info_t *info, size_t infosize); +int rbd_stat(rbd_image_t image, rbd_image_info_t *info, size_t infosize); /* snapshots */ -int rbd_list_snaps(rbd_image_t image, rbd_snap_info_t *snaps, int *max_snaps); -void rbd_list_snaps_end(rbd_snap_info_t *snaps); -int rbd_create_snap(rbd_image_t image, const char *snapname); -int rbd_remove_snap(rbd_image_t image, const char *snapname); -int rbd_rollback_snap(rbd_image_t image, const char *snapname); -int rbd_set_snap(rbd_image_t image, const char *snapname); - -/* lower level access */ -void rbd_get_rados_pools(rbd_pool_t pool, rados_pool_t *md_pool, rados_pool_t *data_pool); +int rbd_snap_list(rbd_image_t image, rbd_snap_info_t *snaps, int *max_snaps); +void rbd_snap_list_end(rbd_snap_info_t *snaps); +int rbd_snap_create(rbd_image_t image, const char *snapname); +int rbd_snap_remove(rbd_image_t image, const char *snapname); +int rbd_snap_rollback(rbd_image_t image, const char *snapname); +int rbd_snap_set(rbd_image_t image, const char *snapname); /* I/O */ typedef void *rbd_completion_t; diff --git a/src/librbd.cc b/src/librbd.cc index bdf931a2099c..ca1299f5b405 100644 --- a/src/librbd.cc +++ b/src/librbd.cc @@ -49,11 +49,6 @@ namespace librbd { class WatchCtx; - struct PoolCtx { - pool_t md; - pool_t data; - }; - struct SnapInfo { librados::snap_t id; uint64_t size; @@ -68,6 +63,7 @@ namespace librbd { uint64_t snapid; std::string name; struct PoolCtx *pctx; + pool_t data; WatchCtx *wctx; bool needs_refresh; Mutex lock;