int ImageCtx::snap_set(string in_snap_name)
{
+ assert(snap_lock.is_wlocked());
snap_t in_snap_id = get_snap_id(in_snap_name);
if (in_snap_id != CEPH_NOSNAP) {
snap_id = in_snap_id;
void ImageCtx::snap_unset()
{
+ assert(snap_lock.is_wlocked());
snap_id = CEPH_NOSNAP;
snap_name = "";
snap_exists = true;
snap_t ImageCtx::get_snap_id(string in_snap_name) const
{
+ assert(snap_lock.is_locked());
map<string, snap_t>::const_iterator it =
snap_ids.find(in_snap_name);
if (it != snap_ids.end())
const SnapInfo* ImageCtx::get_snap_info(snap_t in_snap_id) const
{
+ assert(snap_lock.is_locked());
map<snap_t, SnapInfo>::const_iterator it =
snap_info.find(in_snap_id);
if (it != snap_info.end())
int ImageCtx::get_snap_name(snap_t in_snap_id,
string *out_snap_name) const
{
+ assert(snap_lock.is_locked());
const SnapInfo *info = get_snap_info(in_snap_id);
if (info) {
*out_snap_name = info->name;
uint64_t ImageCtx::get_current_size() const
{
+ assert(md_lock.is_locked());
return size;
}
int ImageCtx::is_snap_protected(snap_t in_snap_id,
bool *is_protected) const
{
+ assert(snap_lock.is_locked());
const SnapInfo *info = get_snap_info(in_snap_id);
if (info) {
*is_protected =
int ImageCtx::is_snap_unprotected(snap_t in_snap_id,
bool *is_unprotected) const
{
+ assert(snap_lock.is_locked());
const SnapInfo *info = get_snap_info(in_snap_id);
if (info) {
*is_unprotected =
uint64_t features, parent_info parent,
uint8_t protection_status, uint64_t flags)
{
+ assert(snap_lock.is_wlocked());
snaps.push_back(id);
SnapInfo info(in_snap_name, in_size, features, parent, protection_status,
flags);
uint64_t ImageCtx::get_image_size(snap_t in_snap_id) const
{
+ assert(md_lock.is_locked());
+ assert(snap_lock.is_locked());
if (in_snap_id == CEPH_NOSNAP) {
return size;
}
const parent_info* ImageCtx::get_parent_info(snap_t in_snap_id) const
{
+ assert(snap_lock.is_locked());
+ assert(parent_lock.is_locked());
if (in_snap_id == CEPH_NOSNAP)
return &parent_md;
const SnapInfo *info = get_snap_info(in_snap_id);