summaryrefslogtreecommitdiffstats
path: root/super-ddf.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2008-09-28 12:12:06 -0700
committerDan Williams <dan.j.williams@intel.com>2008-10-15 14:15:51 -0700
commit593add1b56877a6881419c2496eb26dd1f82d39b (patch)
tree104f8a56227c11845036fe9b9f782e4eb21395f1 /super-ddf.c
parent14e8215b1b996813e467ae6fba71b0e4f5690103 (diff)
downloadmdadm-593add1b56877a6881419c2496eb26dd1f82d39b.tar.gz
mdadm-593add1b56877a6881419c2496eb26dd1f82d39b.tar.xz
mdadm-593add1b56877a6881419c2496eb26dd1f82d39b.zip
monitor: protect against CONFIG_LBD=n
md/resync_start reports different terminal values depending on kernel configuration (~0UL versus ~0ULL). Make detection of the resync-complete state more robust by comparing against array size. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'super-ddf.c')
-rw-r--r--super-ddf.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/super-ddf.c b/super-ddf.c
index ad21e74..e8f8005 100644
--- a/super-ddf.c
+++ b/super-ddf.c
@@ -2748,7 +2748,7 @@ static int ddf_set_array_state(struct active_array *a, int consistent)
if (consistent == 2) {
/* Should check if a recovery should be started FIXME */
consistent = 1;
- if (a->resync_start != ~0ULL)
+ if (!is_resync_complete(a))
consistent = 0;
}
if (consistent)
@@ -2760,7 +2760,7 @@ static int ddf_set_array_state(struct active_array *a, int consistent)
old = ddf->virt->entries[inst].init_state;
ddf->virt->entries[inst].init_state &= ~DDF_initstate_mask;
- if (a->resync_start == ~0ULL)
+ if (is_resync_complete(a))
ddf->virt->entries[inst].init_state |= DDF_init_full;
else if (a->resync_start == 0)
ddf->virt->entries[inst].init_state |= DDF_init_not;