summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr-self-heal-common.h
diff options
context:
space:
mode:
authorVikas Gorur <vikas@gluster.com>2009-04-09 03:54:51 -0700
committerAnand V. Avati <avati@amp.gluster.com>2009-04-09 18:57:08 +0530
commitfb034ba3036fadc7cf35edc5cae7481149a67ca0 (patch)
tree65b4266718238dd11275e477a384c9b3b87b9ef9 /xlators/cluster/afr/src/afr-self-heal-common.h
parentbfbcde78924fc5847b31ae56fe8d14ea52b60dfd (diff)
Compulsorily do self heal if file sizes differ.
If file sizes differ, then compulsorily do self-heal. If no 'wise' sources are found, then pick a 'fool' with the biggest file size. If even 'fools' aren't found, pick the 'innocent' source with the biggest file size. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-self-heal-common.h')
-rw-r--r--xlators/cluster/afr/src/afr-self-heal-common.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heal-common.h b/xlators/cluster/afr/src/afr-self-heal-common.h
index df786e99924..86f155b6897 100644
--- a/xlators/cluster/afr/src/afr-self-heal-common.h
+++ b/xlators/cluster/afr/src/afr-self-heal-common.h
@@ -22,6 +22,12 @@
#define FILE_HAS_HOLES(buf) (((buf)->st_size) > ((buf)->st_blocks * 512))
+typedef enum {
+ AFR_SELF_HEAL_ENTRY,
+ AFR_SELF_HEAL_METADATA,
+ AFR_SELF_HEAL_DATA,
+} afr_self_heal_type;
+
int
afr_sh_select_source (int sources[], int child_count);
@@ -52,8 +58,8 @@ afr_sh_pending_to_delta (dict_t **xattr, char *key, int32_t *delta_matrix[],
int32_t success[], int child_count);
int
-afr_sh_mark_sources (int32_t *pending_matrix[], int sources[],
- int child_count);
+afr_sh_mark_sources (afr_self_heal_t *sh, int child_count,
+ afr_self_heal_type type);
int
afr_sh_delta_to_xattr (int32_t *delta_matrix[], dict_t *xattr[],