[lvm-devel] [PATCH 01/25] Update libdm for replicator
Zdenek Kabelac
zkabelac at redhat.com
Sun Aug 8 08:57:13 UTC 2010
Add units to passed parameters data & timeout
Switch fall_behind_data->fall_behind_size
Switch async_timeout->fall_behind_timeout
Keep ordered as in lvm library.
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
---
libdm/libdevmapper.h | 12 ++++++------
libdm/libdm-deptree.c | 48 +++++++++++++++++++++++++-----------------------
2 files changed, 31 insertions(+), 29 deletions(-)
diff --git a/libdm/libdevmapper.h b/libdm/libdevmapper.h
index e535d2b..b1bfbf3 100644
--- a/libdm/libdevmapper.h
+++ b/libdm/libdevmapper.h
@@ -459,18 +459,18 @@ typedef enum {
DM_REPLICATOR_ASYNC_STALL, /* Stall replicator if not fast enough */
DM_REPLICATOR_ASYNC_DROP, /* Drop sites out of sync */
DM_REPLICATOR_ASYNC_FAIL, /* Fail replicator if slow */
- NUM_DM_REPLICATOR_MODES
-} dm_replicator_mode_t;
+ NUM_DM_REPLICATOR_POLICIES
+} dm_replicator_policy_t;
int dm_tree_node_add_replicator_target(struct dm_tree_node *node,
uint64_t size,
const char *rlog_uuid,
const char *rlog_type,
unsigned rsite_index,
- dm_replicator_mode_t mode,
- uint32_t async_timeout,
- uint64_t fall_behind_data,
- uint32_t fall_behind_ios);
+ dm_replicator_policy_t policy,
+ uint32_t fall_behind_ios,
+ uint64_t fall_behind_size,
+ uint32_t fall_behind_timeout);
int dm_tree_node_add_replicator_dev_target(struct dm_tree_node *node,
uint64_t size,
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index 0e49127..5a12c5f 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -83,10 +83,10 @@ struct replicator_site {
struct dm_list list;
unsigned rsite_index;
- dm_replicator_mode_t mode;
- uint32_t async_timeout;
+ dm_replicator_policy_t policy;
uint32_t fall_behind_ios;
- uint64_t fall_behind_data;
+ uint64_t fall_behind_size;
+ uint32_t fall_behind_timeout;
};
/* Per-segment properties */
@@ -1512,19 +1512,19 @@ static int _replicator_emit_segment_line(const struct load_segment *seg, char *p
seg->rlog_type, rlogbuf, rlog_seg->size);
dm_list_iterate_items(rsite, &seg->rsites) {
- parm_count = (rsite->fall_behind_data
- || rsite->fall_behind_ios
- || rsite->async_timeout) ? 4 : 2;
+ parm_count = (rsite->fall_behind_ios ||
+ rsite->fall_behind_size ||
+ rsite->fall_behind_timeout) ? 4 : 2;
EMIT_PARAMS(*pos, " blockdev %u %u %s", parm_count, rsite->rsite_index,
- (rsite->mode == DM_REPLICATOR_SYNC) ? "synchronous" : "asynchronous");
+ (rsite->policy == DM_REPLICATOR_SYNC) ? "synchronous" : "asynchronous");
- if (rsite->fall_behind_data)
- EMIT_PARAMS(*pos, " data %" PRIu64, rsite->fall_behind_data);
- else if (rsite->fall_behind_ios)
+ if (rsite->fall_behind_ios)
EMIT_PARAMS(*pos, " ios %" PRIu32, rsite->fall_behind_ios);
- else if (rsite->async_timeout)
- EMIT_PARAMS(*pos, " timeout %" PRIu32, rsite->async_timeout);
+ else if (rsite->fall_behind_size)
+ EMIT_PARAMS(*pos, " size %" PRIu64 "s", rsite->fall_behind_size);
+ else if (rsite->fall_behind_timeout)
+ EMIT_PARAMS(*pos, " timeout %" PRIu32 "s", rsite->fall_behind_timeout);
}
return 1;
@@ -2214,10 +2214,10 @@ int dm_tree_node_add_replicator_target(struct dm_tree_node *node,
const char *rlog_uuid,
const char *rlog_type,
unsigned rsite_index,
- dm_replicator_mode_t mode,
- uint32_t async_timeout,
- uint64_t fall_behind_data,
- uint32_t fall_behind_ios)
+ dm_replicator_policy_t policy,
+ uint32_t fall_behind_ios,
+ uint64_t fall_behind_size,
+ uint32_t fall_behind_timeout)
{
struct load_segment *rseg;
struct replicator_site *rsite;
@@ -2245,8 +2245,10 @@ int dm_tree_node_add_replicator_target(struct dm_tree_node *node,
return 0;
}
- if (!(rseg->rlog_type = dm_pool_strdup(node->dtree->mem, rlog_type)))
- return_0;
+ if (!(rseg->rlog_type = dm_pool_strdup(node->dtree->mem, rlog_type))) {
+ log_error("Failed to allocate replicator log type.");
+ return 0;
+ }
dm_list_init(&rseg->rsites);
rseg->rdevice_count = 0;
@@ -2254,8 +2256,8 @@ int dm_tree_node_add_replicator_target(struct dm_tree_node *node,
}
/* Add site to segment */
- if (mode == DM_REPLICATOR_SYNC
- && (async_timeout || fall_behind_ios || fall_behind_data)) {
+ if ((policy == DM_REPLICATOR_SYNC) &&
+ (fall_behind_ios || fall_behind_size || fall_behind_timeout)) {
log_error("Async parameters passed for synchronnous replicator.");
return 0;
}
@@ -2280,10 +2282,10 @@ int dm_tree_node_add_replicator_target(struct dm_tree_node *node,
dm_list_add(&rseg->rsites, &rsite->list);
rseg->rsite_count++;
- rsite->mode = mode;
- rsite->async_timeout = async_timeout;
- rsite->fall_behind_data = fall_behind_data;
+ rsite->policy = policy;
rsite->fall_behind_ios = fall_behind_ios;
+ rsite->fall_behind_size = fall_behind_size;
+ rsite->fall_behind_timeout = fall_behind_timeout;
rsite->rsite_index = rsite_index;
return 1;
--
1.7.2.1
More information about the lvm-devel
mailing list