]> sourceware.org Git - lvm2.git/commitdiff
thin: add alloc_pool_metadata
authorZdenek Kabelac <zkabelac@redhat.com>
Mon, 19 Nov 2012 12:37:36 +0000 (13:37 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Mon, 19 Nov 2012 13:38:17 +0000 (14:38 +0100)
Since our api call is not yet powerfull enough,
use this wrapper to preset options.

tools/toollib.c
tools/toollib.h

index c3c638191fb33c8c3c2e8c9e514f7c351b6c4524..ba1ba94b5d1ca9d508e82dc5d2be77958492ec48 100644 (file)
@@ -1650,6 +1650,50 @@ int update_pool_params(struct cmd_context *cmd, unsigned attr,
        return 1;
 }
 
+struct logical_volume *alloc_pool_metadata(struct logical_volume *pool_lv,
+                                          alloc_policy_t alloc,
+                                          const char *name,
+                                          struct dm_list *pvh,
+                                          uint32_t read_ahead,
+                                          uint32_t stripes,
+                                          uint32_t stripe_size,
+                                          uint64_t size)
+{
+       struct logical_volume *metadata_lv;
+       struct lvcreate_params lvc;
+
+       /* FIXME: Make lvm2api usable */
+       memset(&lvc, 0, sizeof(lvc));
+
+       if (!(lvc.extents = extents_from_size(pool_lv->vg->cmd, size,
+                                             pool_lv->vg->extent_size)))
+               return_0;
+
+       if (!(lvc.segtype = get_segtype_from_string(pool_lv->vg->cmd, "striped")))
+               return_0;
+
+       dm_list_init(&lvc.tags);
+
+       /* FIXME: allocate properly space for metadata_lv */
+       lvc.activate = CHANGE_ALY;
+       lvc.alloc = alloc;
+       lvc.lv_name = name;
+       lvc.major = -1;
+       lvc.minor = -1;
+       lvc.permission = LVM_READ | LVM_WRITE;
+       lvc.pvh = pvh;
+       lvc.read_ahead = read_ahead;
+       lvc.stripe_size = stripe_size;
+       lvc.stripes = stripes;
+       lvc.vg_name = pool_lv->vg->name;
+       lvc.zero = 1;
+
+       if (!(metadata_lv = lv_create_single(pool_lv->vg, &lvc)))
+               return_0;
+
+       return metadata_lv;
+}
+
 /*
  * Generic stripe parameter checks.
  */
index 09071b319cefef41d1cc71758449940d6fb3a542..80c01fde2c5a9fe34b032a0fa3a6f016bdd55d63 100644 (file)
@@ -120,6 +120,11 @@ int update_pool_params(struct cmd_context *cmd, unsigned attr,
                       uint32_t data_extents, uint32_t extent_size,
                       uint32_t *chunk_size, thin_discards_t *discards,
                       uint64_t *pool_metadata_size);
+struct logical_volume *alloc_pool_metadata(struct logical_volume *pool_lv,
+                                          alloc_policy_t alloc, const char *name,
+                                          struct dm_list *pvh, uint32_t read_ahead,
+                                          uint32_t stripes, uint32_t stripe_size,
+                                          uint64_t size);
 int get_stripe_params(struct cmd_context *cmd, uint32_t *stripes,
                      uint32_t *stripe_size);
 
This page took 0.045544 seconds and 5 git commands to generate.