diff options
author | Jonathan Brassow <jbrassow@redhat.com> | 2007-07-12 17:29:04 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-12 15:01:08 -0700 |
commit | f44db678edcc6f4c2779ac43f63f0b9dfa28b724 (patch) | |
tree | bbd835d00ca6ed0805c5c7331ebc5dd7978d299c /mm/fremap.c | |
parent | d0d444c7d48c14d59f665887c758fde248f1cb37 (diff) | |
download | op-kernel-dev-f44db678edcc6f4c2779ac43f63f0b9dfa28b724.zip op-kernel-dev-f44db678edcc6f4c2779ac43f63f0b9dfa28b724.tar.gz |
dm raid1: handle resync failures
Device-mapper mirroring currently takes a best effort approach to
recovery - failures during mirror synchronization are completely ignored.
This means that regions are marked 'in-sync' and 'clean' and removed
from the hash list. Future reads and writes that query the region
will incorrectly interpret the region as in-sync.
This patch handles failures during the recovery process. If a failure
occurs, the region is marked as 'not-in-sync' (aka RH_NOSYNC) and added
to a new list 'failed_recovered_regions'.
Regions on the 'failed_recovered_regions' list are not marked as 'clean'
upon removal from the list. Furthermore, if the DM_RAID1_HANDLE_ERRORS
flag is set, the region is marked as 'not-in-sync'. This action prevents
any future read-balancing from choosing an invalid device because of the
'not-in-sync' status.
If "handle_errors" is not specified when creating a mirror (leaving the
DM_RAID1_HANDLE_ERRORS flag unset), failures will be ignored exactly as they
would be without this patch. This is to preserve backwards compatibility with
user-space tools, such as 'pvmove'. However, since future read-balancing
policies will rely on the correct sync status of a region, a user must choose
"handle_errors" when using read-balancing.
Signed-off-by: Jonathan Brassow <jbrassow@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/fremap.c')
0 files changed, 0 insertions, 0 deletions