[lvm-devel] master - cache: Add lv_cache_setpolicy to cache_manip.c.

Petr Rockai mornfall at fedoraproject.org
Thu Nov 20 15:53:09 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=d22ffd8c289f570b3406f684212b6e7821179710
Commit:        d22ffd8c289f570b3406f684212b6e7821179710
Parent:        0050480c0eced1da98ffc76d5010cef605c776eb
Author:        Petr Rockai <prockai at redhat.com>
AuthorDate:    Wed Nov 19 18:38:30 2014 +0100
Committer:     Petr Rockai <prockai at redhat.com>
CommitterDate: Thu Nov 20 16:51:06 2014 +0100

cache: Add lv_cache_setpolicy to cache_manip.c.

---
 lib/metadata/cache_manip.c       |   18 ++++++++++++++++++
 lib/metadata/metadata-exported.h |    1 +
 2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/lib/metadata/cache_manip.c b/lib/metadata/cache_manip.c
index fb5346d..f7b1b99 100644
--- a/lib/metadata/cache_manip.c
+++ b/lib/metadata/cache_manip.c
@@ -395,6 +395,24 @@ int lv_is_cache_origin(const struct logical_volume *lv)
 	return seg && lv_is_cache(seg->lv) && !lv_is_pending_delete(seg->lv) && (seg_lv(seg, 0) == lv);
 }
 
+int lv_cache_setpolicy(struct logical_volume *lv, struct dm_config_tree *policy)
+{
+	struct lv_segment *seg = first_seg(lv);
+	const char *name;
+
+	if (lv_is_cache(lv))
+		seg = first_seg(seg->pool_lv);
+
+	if (!(seg->policy_settings = dm_config_clone_node_with_mem(lv->vg->vgmem, policy->root, 0)))
+		return_0;
+
+	if ((name = dm_config_find_str(policy->root, "policy", NULL)) &&
+	    !(seg->policy_name = dm_pool_strdup(lv->vg->vgmem, name)))
+		return_0;
+
+	return 1;
+}
+
 /*
  * Wipe cache pool metadata area before use.
  *
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index c472f41..d960e1f 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -1109,6 +1109,7 @@ int validate_lv_cache_create_origin(const struct logical_volume *origin_lv);
 struct logical_volume *lv_cache_create(struct logical_volume *pool,
 				       struct logical_volume *origin);
 int lv_cache_remove(struct logical_volume *cache_lv);
+int lv_cache_setpolicy(struct logical_volume *cache_lv, struct dm_config_tree *pol);
 int wipe_cache_pool(struct logical_volume *cache_pool_lv);
 /* --  metadata/cache_manip.c */
 




More information about the lvm-devel mailing list