int open_pool(const char *pool_name, pool_t *pool);
int close_pool(pool_t pool);
- int open_image(pool_t pool, const char *name, image_t *image, const char *snap_name);
- int close_image(image_t image);
+
+ int list(pool_t pool, std::vector<string>& names);
int create(pool_t pool, const char *name, size_t size);
int remove(pool_t pool, const char *name);
- int resize(pool_t pool, image_t image, size_t size);
- int stat(pool_t pool, image_t image, image_info_t& info);
- int list(pool_t pool, std::vector<string>& names);
int copy(pool_t src_pool, const char *srcname, pool_t dest_pool, const char *destname);
int rename(pool_t src_pool, const char *srcname, const char *destname);
- int create_snap(pool_t pool, image_t image, const char *snap_name);
- int remove_snap(pool_t pool, image_t image, const char *snap_name);
- int rollback_snap(pool_t pool, image_t image, const char *snap_name);
- int list_snaps(pool_t pool, image_t image, std::vector<snap_info_t>& snaps);
- int set_snap(pool_t pool, image_t image, const char *snap_name);
+ int open_image(pool_t pool, const char *name, image_t *image, const char *snap_name);
+ int close_image(image_t image);
+ int resize(image_t image, size_t size);
+ int stat(image_t image, image_info_t& info);
+
+ /* snapshots */
+ int list_snaps(image_t image, std::vector<snap_info_t>& snaps);
+ int create_snap(image_t image, const char *snap_name);
+ int remove_snap(image_t image, const char *snap_name);
+ int rollback_snap(image_t image, const char *snap_name);
+ int set_snap(image_t image, const char *snap_name);
+ /* lower level access */
void get_rados_pools(pool_t pool, librados::pool_t *md_pool, librados::pool_t *data_pool);
};
vector<librados::snap_t> snaps;
uint64_t snapid;
std::string name;
+ struct PoolCtx *pctx;
};
class RBDClient
return 0;
}
-void librbd::RBD::version(int *major, int *minor, int *extra)
-{
- librbd_version(major, minor, extra);
-}
-
int librbd::RBDClient::open_pools(const char *pool_name, PoolCtx *ctx)
{
librados::pool_t pool, md_pool;
return 0;
}
+/*
+ RBD
+*/
+
+void librbd::RBD::version(int *major, int *minor, int *extra)
+{
+ librbd_version(major, minor, extra);
+}
+
int librbd::RBD::initialize(int argc, const char *argv[])
{
client = new RBDClient();
ImageCtx *ictx = new librbd::ImageCtx;
if (!ictx)
return -ENOMEM;
+ ictx->pctx = pctx;
ictx->name = name;
string md_oid = name;
return r;
}
-int librbd::RBD::resize(pool_t pool, image_t image, size_t size)
+int librbd::RBD::resize(image_t image, size_t size)
{
- PoolCtx *ctx = (PoolCtx *)pool;
ImageCtx *ictx = (ImageCtx *)image;
- int r = client->resize(ctx, ictx, size);
+ int r = client->resize(ictx->pctx, ictx, size);
return r;
}
-int librbd::RBD::stat(pool_t pool, image_t image, image_info_t& info)
+int librbd::RBD::stat(image_t image, image_info_t& info)
{
- PoolCtx *ctx = (PoolCtx *)pool;
ImageCtx *ictx = (ImageCtx *)image;
- int r = client->info(ctx, ictx, info);
+ int r = client->info(ictx->pctx, ictx, info);
return r;
}
return r;
}
-int librbd::RBD::create_snap(pool_t pool, image_t image, const char *snap_name)
+int librbd::RBD::create_snap(image_t image, const char *snap_name)
{
- PoolCtx *ctx = (PoolCtx *)pool;
ImageCtx *ictx = (ImageCtx *)image;
- int r = client->create_snap(ctx, ictx, snap_name);
+ int r = client->create_snap(ictx->pctx, ictx, snap_name);
return r;
}
-int librbd::RBD::remove_snap(pool_t pool, image_t image, const char *snap_name)
+int librbd::RBD::remove_snap(image_t image, const char *snap_name)
{
- PoolCtx *ctx = (PoolCtx *)pool;
ImageCtx *ictx = (ImageCtx *)image;
- int r = client->remove_snap(ctx, ictx, snap_name);
+ int r = client->remove_snap(ictx->pctx, ictx, snap_name);
return r;
}
-int librbd::RBD::rollback_snap(pool_t pool, image_t image, const char *snap_name)
+int librbd::RBD::rollback_snap(image_t image, const char *snap_name)
{
- PoolCtx *ctx = (PoolCtx *)pool;
ImageCtx *ictx = (ImageCtx *)image;
- int r = client->rollback_snap(ctx, ictx, snap_name);
+ int r = client->rollback_snap(ictx->pctx, ictx, snap_name);
return r;
}
-int librbd::RBD::list_snaps(pool_t pool, image_t image, std::vector<librbd::snap_info_t>& snaps)
+int librbd::RBD::list_snaps(image_t image, std::vector<librbd::snap_info_t>& snaps)
{
- PoolCtx *ctx = (PoolCtx *)pool;
ImageCtx *ictx = (ImageCtx *)image;
- int r = client->list_snaps(ctx, ictx, snaps);
+ int r = client->list_snaps(ictx->pctx, ictx, snaps);
return r;
}
-int librbd::RBD::set_snap(pool_t pool, image_t image, const char *snap_name)
+int librbd::RBD::set_snap(image_t image, const char *snap_name)
{
- PoolCtx *ctx = (PoolCtx *)pool;
ImageCtx *ictx = (ImageCtx *)image;
- return client->set_snap(ctx, ictx, snap_name);
+ return client->set_snap(ictx->pctx, ictx, snap_name);
}
void librbd::RBD::get_rados_pools(pool_t pool, librados::pool_t *md_pool, librados::pool_t *data_pool)