]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
handle resync completion
authorDan Williams <dan.j.williams@intel.com>
Thu, 15 May 2008 06:48:42 +0000 (16:48 +1000)
committerNeil Brown <neilb@suse.de>
Thu, 15 May 2008 06:48:42 +0000 (16:48 +1000)
From: Dan Williams <dan.j.williams@intel.com>

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
mdadm.h
monitor.c
super-ddf.c
super-intel.c

diff --git a/mdadm.h b/mdadm.h
index 3f778f1cf548fd79d458f4f28560f145282bb6fa..f3b4ec27cc98c64a48e37a4eca529a84cdc3b3aa 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -407,6 +407,7 @@ extern struct superswitch {
        int (*open_new)(struct supertype *c, struct active_array *a, int inst);
        void (*mark_clean)(struct active_array *a, unsigned long long sync_pos);
        void (*mark_dirty)(struct active_array *a);
+       void (*mark_sync)(struct active_array *a, unsigned long long resync);
        void (*set_disk)(struct active_array *a, int n);
        void (*sync_metadata)(struct active_array *a);
 
index 8f5ad46f767b591327249b40a021f6cb9c5a7282..ee35bdf2588f755dab2a907228142c5f5f7b14af 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -274,10 +274,9 @@ static int read_and_act(struct active_array *a)
 
        if (a->curr_action == idle &&
            a->prev_action == resync) {
-               /* check resync_start to see if it is 'max'.
-                * Do I open here, or have it open the whole time?
-                */
-               get_sync_pos(a);
+               /* check resync_start to see if it is 'max' */
+               get_resync_start(a);
+               a->container->ss->mark_sync(a, a->resync_start);
                check_degraded = 1;
        }
 
index c11fa1c7fb14204823002cad00d09cc472834d30..8e9cedcac47552e1d9094ac2ef71daa09d5eec07 100644 (file)
@@ -2459,6 +2459,11 @@ static void ddf_mark_dirty(struct active_array *a)
        fprintf(stderr, "ddf: mark dirty\n");
 }
 
+static void ddf_mark_sync(struct active_array *a, unsigned long long resync)
+{
+       fprintf(stderr, "ddf: mark sync\n");
+}
+
 static void ddf_set_disk(struct active_array *a, int n)
 {
        fprintf(stderr, "ddf: set_disk %d\n", n);
@@ -2504,6 +2509,7 @@ struct superswitch super_ddf = {
        .load_super     = load_super_ddf,
        .mark_clean     = ddf_mark_clean,
        .mark_dirty     = ddf_mark_dirty,
+       .mark_sync      = ddf_mark_sync,
        .set_disk       = ddf_set_disk,
        .sync_metadata  = ddf_sync_metadata,
 
index 9fd4f775cc6416cf6867bbd2cff0f68712b1a48e..1d00e29cb2fc616567e3dc9896eab8be1a53a90d 100644 (file)
@@ -1132,6 +1132,11 @@ static void imsm_mark_dirty(struct active_array *a)
        fprintf(stderr, "imsm: mark dirty\n");
 }
 
+static void imsm_mark_sync(struct active_array *a, unsigned long long resync)
+{
+       fprintf(stderr, "imsm: mark sync\n");
+}
+
 static void imsm_set_disk(struct active_array *a, int n)
 {
        fprintf(stderr, "imsm: set_disk %d\n", n);
@@ -1176,6 +1181,7 @@ struct superswitch super_imsm = {
        .load_super     = load_super_imsm,
        .mark_clean     = imsm_mark_clean,
        .mark_dirty     = imsm_mark_dirty,
+       .mark_sync      = imsm_mark_sync,
        .set_disk       = imsm_set_disk,
        .sync_metadata  = imsm_sync_metadata,
 };