]> sourceware.org Git - dm.git/commitdiff
Add DM_CORELOG flag to dm_tree_node_add_mirror_target().
authorAlasdair Kergon <agk@redhat.com>
Thu, 11 May 2006 19:10:55 +0000 (19:10 +0000)
committerAlasdair Kergon <agk@redhat.com>
Thu, 11 May 2006 19:10:55 +0000 (19:10 +0000)
WHATS_NEW
lib/libdevmapper.h
lib/libdm-deptree.c

index 071e5d8fdbd07f3f3aec37806cc139660e63974a..29b7700b80f8c6710c085dded27c7c40b7359288 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 1.02.07 - 
 =============================
+  Add DM_CORELOG flag to dm_tree_node_add_mirror_target().
   Avoid a dmeventd compiler warning.
 
 Version 1.02.06 - 10 May 2006
index 9b6d3fa1348a289054ebd9f149daaa27ca91dfc8..ecfd72c6e2a492376cdb19d26735bc6c4c45b237 100644 (file)
@@ -350,6 +350,7 @@ int dm_tree_node_add_mirror_target(struct dm_tree_node *node,
 #define DM_NOSYNC              0x00000001      /* Known already in sync */
 #define DM_FORCESYNC           0x00000002      /* Force resync */
 #define DM_BLOCK_ON_ERROR      0x00000004      /* On error, suspend I/O */
+#define DM_CORELOG             0x00000008      /* In-memory log */
 
 int dm_tree_node_add_mirror_target_log(struct dm_tree_node *node,
                                          uint32_t region_size,
index 82b54ec6bb2b1ca45e966c416661754c6ec06328..99ac6c65163bdc5de29692e7496cfacac575d891 100644 (file)
@@ -1243,8 +1243,8 @@ static int _emit_segment_line(struct dm_task *dmt, struct load_segment *seg, uin
                log_parm_count += hweight32(seg->flags);        /* [no]sync, block_on_error etc. */
 
                if (seg->clustered) {
-                       if (seg->uuid)
-                               log_parm_count++;       /* uuid */
+                       if (seg->uuid && !(seg->flags & DM_CORELOG))
+                               log_parm_count++;       /* uuid (already counted for core log) */
                        if ((tw = _dm_snprintf(params + pos, paramsize - pos, "clustered_")) < 0) {
                                stack;  /* Out of space */
                                return -1;
@@ -1701,18 +1701,19 @@ int dm_tree_node_add_mirror_target_log(struct dm_tree_node *node,
        seg = list_item(list_last(&node->props.segs), struct load_segment);
 
        if (log_uuid) {
-               if (!(log_node = dm_tree_find_node_by_uuid(node->dtree, log_uuid))) {
-                       log_error("Couldn't find mirror log uuid %s.", log_uuid);
-                       return 0;
-               }
-
-               if (!_link_tree_nodes(node, log_node))
-                       return_0;
-
                if (!(seg->uuid = dm_pool_strdup(node->dtree->mem, log_uuid))) {
                        log_error("log uuid pool_strdup failed");
                        return 0;
                }
+               if (!(flags & DM_CORELOG)) {
+                       if (!(log_node = dm_tree_find_node_by_uuid(node->dtree, log_uuid))) {
+                               log_error("Couldn't find mirror log uuid %s.", log_uuid);
+                               return 0;
+                       }
+
+                       if (!_link_tree_nodes(node, log_node))
+                               return_0;
+               }
        }
 
        seg->log = log_node;
This page took 0.029497 seconds and 5 git commands to generate.