diff --git a/rbd/rbd.go b/rbd/rbd.go index e18567e..9cd55d4 100644 --- a/rbd/rbd.go +++ b/rbd/rbd.go @@ -843,6 +843,10 @@ func (image *Image) GetParentInfo(p_pool, p_name, p_snapname []byte) error { // int rbd_snap_remove(rbd_image_t image, const char *snapname); func (snapshot *Snapshot) Remove() error { + if snapshot.image.image == nil { + return RbdErrorImageNotOpen + } + var c_snapname *C.char = C.CString(snapshot.name) defer C.free(unsafe.Pointer(c_snapname)) @@ -853,6 +857,10 @@ func (snapshot *Snapshot) Remove() error { // int rbd_snap_rollback_with_progress(rbd_image_t image, const char *snapname, // librbd_progress_fn_t cb, void *cbdata); func (snapshot *Snapshot) Rollback() error { + if snapshot.image.image == nil { + return RbdErrorImageNotOpen + } + var c_snapname *C.char = C.CString(snapshot.name) defer C.free(unsafe.Pointer(c_snapname)) @@ -861,6 +869,10 @@ func (snapshot *Snapshot) Rollback() error { // int rbd_snap_protect(rbd_image_t image, const char *snap_name); func (snapshot *Snapshot) Protect() error { + if snapshot.image.image == nil { + return RbdErrorImageNotOpen + } + var c_snapname *C.char = C.CString(snapshot.name) defer C.free(unsafe.Pointer(c_snapname)) @@ -869,6 +881,10 @@ func (snapshot *Snapshot) Protect() error { // int rbd_snap_unprotect(rbd_image_t image, const char *snap_name); func (snapshot *Snapshot) Unprotect() error { + if snapshot.image.image == nil { + return RbdErrorImageNotOpen + } + var c_snapname *C.char = C.CString(snapshot.name) defer C.free(unsafe.Pointer(c_snapname)) @@ -878,6 +894,10 @@ func (snapshot *Snapshot) Unprotect() error { // int rbd_snap_is_protected(rbd_image_t image, const char *snap_name, // int *is_protected); func (snapshot *Snapshot) IsProtected() (bool, error) { + if snapshot.image.image == nil { + return false, RbdErrorImageNotOpen + } + var c_is_protected C.int var c_snapname *C.char = C.CString(snapshot.name) defer C.free(unsafe.Pointer(c_snapname)) @@ -893,6 +913,10 @@ func (snapshot *Snapshot) IsProtected() (bool, error) { // int rbd_snap_set(rbd_image_t image, const char *snapname); func (snapshot *Snapshot) Set() error { + if snapshot.image.image == nil { + return RbdErrorImageNotOpen + } + var c_snapname *C.char = C.CString(snapshot.name) defer C.free(unsafe.Pointer(c_snapname))