]> sourceware.org Git - lvm2.git/commitdiff
Implement lvm_vg_set_property() by calling internal 'set' property function.
authorPetr Rockai <prockai@redhat.com>
Wed, 17 Nov 2010 19:16:05 +0000 (19:16 +0000)
committerPetr Rockai <prockai@redhat.com>
Wed, 17 Nov 2010 19:16:05 +0000 (19:16 +0000)
Signed-off-by: Dave Wysochanski <wysochanski@pobox.com>
Reviewed-by: Petr Rockai <prockai@redhat.com>
liblvm/lvm2app.h
liblvm/lvm_misc.c
liblvm/lvm_misc.h
liblvm/lvm_vg.c

index a5f65e98d2cbb6b3235743b2e899fadcbbaa373e..a871df3981be15b7badb52828e7f55e877d3b484 100644 (file)
@@ -911,6 +911,36 @@ struct dm_list *lvm_vg_get_tags(const vg_t vg);
  */
 struct lvm_property_value lvm_vg_get_property(const vg_t vg, const char *name);
 
+/**
+ * Set the value of a VG property.  Note that the property must be
+ * a 'settable' property, as evidenced by the 'is_settable' flag
+ * when querying the property.
+ *
+ * \memberof vg_t
+ *
+ * The memory allocated for a string property value is tied to the vg_t
+ * handle and will be released when lvm_vg_close() is called.
+ *
+ * Example (integer):
+ *      lvm_property_value copies;
+ *
+ *      if (lvm_vg_get_property(vg, "vg_mda_copies", &copies) < 0) {
+ *              // Error - unable to query property
+ *      }
+ *      if (!copies.is_settable) {
+ *              // Error - property not settable
+ *      }
+ *      copies.value.integer = 2;
+ *      if (lvm_vg_set_property(vg, "vg_mda_copies", &copies) < 0) {
+ *              // handle error
+ *      }
+ *
+ * \return
+ * 0 (success) or -1 (failure).
+ */
+int lvm_vg_set_property(const vg_t vg, const char *name,
+                       struct lvm_property_value *value);
+
 /************************** logical volume handling *************************/
 
 /**
index adec2bc5780fd8fdf9170d4f54e1d36bfb10e54d..30984e8471187b7cd21f2d5cce98aaf67282c6a1 100644 (file)
@@ -78,3 +78,33 @@ struct lvm_property_value get_property(const pv_t pv, const vg_t vg,
        v.is_valid = 1;
        return v;
 }
+
+
+int set_property(const pv_t pv, const vg_t vg, const lv_t lv,
+                const char *name, struct lvm_property_value *v)
+{
+       struct lvm_property_type prop;
+
+       prop.id = name;
+       if (v->is_string)
+               prop.value.string = v->value.string;
+       else
+               prop.value.integer = v->value.integer;
+       if (pv) {
+               if (!pv_set_property(pv, &prop)) {
+                       v->is_valid = 0;
+                       return -1;
+               }
+       } else if (vg) {
+               if (!vg_set_property(vg, &prop)) {
+                       v->is_valid = 0;
+                       return -1;
+               }
+       } else if (lv) {
+               if (!lv_set_property(lv, &prop)) {
+                       v->is_valid = 0;
+                       return -1;
+               }
+       }
+       return 0;
+}
index b4e675eb5c06ede64ebc681fdafcd8887f53b8e7..710c98d98c70bd1fc087c31ffa8c07ec14354b06 100644 (file)
@@ -19,5 +19,7 @@
 struct dm_list *tag_list_copy(struct dm_pool *p, struct dm_list *tag_list);
 struct lvm_property_value get_property(const pv_t pv, const vg_t vg,
                                       const lv_t lv, const char *name);
+int set_property(const pv_t pv, const vg_t vg, const lv_t lv,
+                const char *name, struct lvm_property_value *value);
 
 #endif
index 6970910be7f2f90d9dcddb67279a56aab68a9fe8..e6644ae462670093dbce02301271216cab3c24eb 100644 (file)
@@ -341,6 +341,12 @@ struct lvm_property_value lvm_vg_get_property(const vg_t vg, const char *name)
        return get_property(NULL, vg, NULL, name);
 }
 
+int lvm_vg_set_property(const vg_t vg, const char *name,
+                       struct lvm_property_value *value)
+{
+       return set_property(NULL, vg, NULL, name, value);
+}
+
 struct dm_list *lvm_list_vg_names(lvm_t libh)
 {
        return get_vgnames((struct cmd_context *)libh, 0);
This page took 0.0425410000000001 seconds and 5 git commands to generate.