1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-04 09:18:36 +03:00
lvm2/daemons/cmirrord
Jonathan Earl Brassow 53670b18f5 Fix for bug 596453: multiple mirror image failures cause lvm repair...
The lvm repair issues I believe are the superficial symptoms of this
bug - there are worse issues that are not as clearly seen.  From my
inline comments:
* If the mirror was successfully recovered, we want to always
* force every machine to write to all devices - otherwise,
* corruption will occur.  Here's how:
*    Node1 suffers a failure and marks a region out-of-sync
*    Node2 attempts a write, gets by is_remote_recovering,
*          and queries the sync status of the region - finding
*          it out-of-sync.
*    Node2 thinks the write should be a nosync write, but it
*          hasn't suffered the drive failure that Node1 has yet.
*          It then issues a generic_make_request directly to
*          the primary image only - which is exactly the device
*          that has suffered the failure.
*    Node2 suffers a lost write - which completely bypasses the
*          mirror layer because it had gone through generic_m_r.
*    The file system will likely explode at this point due to
*    I/O errors.  If it wasn't the primary that failed, it is
*    easily possible in this case to issue writes to just one
*    of the remaining images - also leaving the mirror inconsistent.
*
* We let in_sync() return 1 in a cluster regardless of what is
* in the bitmap once recovery has successfully completed on a
* mirror.  This ensures the mirroring code will continue to
* attempt to write to all mirror images.  The worst that can
* happen for reads is that additional read attempts may be
* taken.
2010-08-17 23:56:23 +00:00
..
clogd.c Add dm_create_lockfile to libdm to handle pidfiles for all daemons. 2010-07-13 13:51:01 +00:00
cluster.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
cluster.h Deal with a few more compiler warnings. 2010-01-20 02:43:19 +00:00
common.h Clean up include files. 2010-01-18 21:07:24 +00:00
compat.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
compat.h Clean up include files. 2010-01-18 21:07:24 +00:00
functions.c Fix for bug 596453: multiple mirror image failures cause lvm repair... 2010-08-17 23:56:23 +00:00
functions.h Clean up include files. 2010-01-18 21:07:24 +00:00
link_mon.c Signal handling FIXMEs. 2010-01-19 15:58:45 +00:00
link_mon.h Clean up include files. 2010-01-18 21:07:24 +00:00
local.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
local.h Clean up include files. 2010-01-18 21:07:24 +00:00
logging.c Clean up include files. 2010-01-18 21:07:24 +00:00
logging.h Use "" instead of <> for configure.h and libdevmapper.h 2010-06-15 11:00:44 +00:00
Makefile.in INSTALL rules updates 2010-04-09 21:42:48 +00:00