#define RBD_FEATURES_INTERNAL (RBD_FEATURE_OPERATIONS)
#define RBD_OPERATION_FEATURE_CLONE_V2 (1ULL<<0)
+#define RBD_OPERATION_FEATURE_GROUP (1ULL<<1)
+#define RBD_OPERATION_FEATURE_SNAP_TRASH (1ULL<<2)
#define RBD_OPERATION_FEATURE_NAME_CLONE_V2 "clone"
+#define RBD_OPERATION_FEATURE_NAME_GROUP "group"
+#define RBD_OPERATION_FEATURE_NAME_SNAP_TRASH "snap-trash"
/// all valid operation features
-#define RBD_OPERATION_FEATURES_ALL (RBD_OPERATION_FEATURE_CLONE_V2)
+#define RBD_OPERATION_FEATURES_ALL (RBD_OPERATION_FEATURE_CLONE_V2 | \
+ RBD_OPERATION_FEATURE_GROUP | \
+ RBD_OPERATION_FEATURE_SNAP_TRASH)
#endif
ASSERT_EQ(0, get_features(&ioctx, oid, CEPH_NOSNAP, &features));
ASSERT_EQ(0u, features);
+ op_features = RBD_OPERATION_FEATURES_ALL;
mask = RBD_OPERATION_FEATURES_ALL;
ASSERT_EQ(0, op_features_set(&ioctx, oid, op_features, mask));
ASSERT_EQ(0, op_features_get(&ioctx, oid, &actual_op_features));
~RBD_OPERATION_FEATURE_CLONE_V2;
ASSERT_EQ(expected_op_features, actual_op_features);
- mask = 0;
+ mask = RBD_OPERATION_FEATURES_ALL;
ASSERT_EQ(0, op_features_set(&ioctx, oid, op_features, mask));
ASSERT_EQ(0, get_features(&ioctx, oid, CEPH_NOSNAP, &features));
ASSERT_EQ(0u, features);