diff options
author | Dan Williams <dan.j.williams@intel.com> | 2008-09-28 12:12:06 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2008-10-15 14:15:51 -0700 |
commit | 593add1b56877a6881419c2496eb26dd1f82d39b (patch) | |
tree | 104f8a56227c11845036fe9b9f782e4eb21395f1 /super-ddf.c | |
parent | 14e8215b1b996813e467ae6fba71b0e4f5690103 (diff) | |
download | mdadm-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.c | 4 |
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; |