From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26474 invoked by alias); 21 Sep 2007 20:07:37 -0000 Received: (qmail 26458 invoked by uid 9478); 21 Sep 2007 20:07:37 -0000 Date: Fri, 21 Sep 2007 20:07:00 -0000 Message-ID: <20070921200737.26457.qmail@sourceware.org> From: jbrassow@sourceware.org To: cluster-cvs@sources.redhat.com Subject: cluster/cmirror-kernel/src dm-cmirror-client.c ... Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2007-q3/txt/msg00450.txt.bz2 CVSROOT: /cvs/cluster Module name: cluster Branch: RHEL4 Changes by: jbrassow@sourceware.org 2007-09-21 20:07:37 Modified files: cmirror-kernel/src: dm-cmirror-client.c dm-cmirror-server.c dm-cmirror-xfr.h Log message: Bug 291521: Cluster mirror can become out-of-sync if nominal I/O overla... It is insufficient to simply delay flush requests that have marks pending to a recovering region. Although a collision between nominal I/O and resync I/O can be avoided this way, the state of the region changes from RH_NOSYNC to RH_CLEAN in the mean time. The machine being delayed will think the region is still in the RH_NOSYNC state and only write to the primary device... leaving the other mirror devices out-of-sync. We must delay writes to remotely recovering regions before the state of the region is determined and cached in the region caching code... The entry point for this already exists in 'is_remote_recovering'. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror-kernel/src/dm-cmirror-client.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.51&r2=1.1.2.52 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror-kernel/src/dm-cmirror-server.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.37&r2=1.1.2.38 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror-kernel/src/dm-cmirror-xfr.h.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.6&r2=1.1.2.7