From mboxrd@z Thu Jan 1 00:00:00 1970 From: jbrassow@sourceware.org Date: 10 Apr 2007 18:09:10 -0000 Subject: [Cluster-devel] cluster/cmirror-kernel/src dm-cmirror-server.c Message-ID: <20070410180910.32240.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Branch: RHEL4 Changes by: jbrassow at sourceware.org 2007-04-10 19:09:09 Modified files: cmirror-kernel/src: dm-cmirror-server.c Log message: Remove an overzealous BUG statement. Comments inlined Patches: 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.31&r2=1.1.2.32 --- cluster/cmirror-kernel/src/Attic/dm-cmirror-server.c 2007/04/10 07:12:24 1.1.2.31 +++ cluster/cmirror-kernel/src/Attic/dm-cmirror-server.c 2007/04/10 18:09:09 1.1.2.32 @@ -708,7 +708,18 @@ if (!ru) { DMERR("Unable to find region to be marked out-of-sync: %Lu/%s/%u", lr->u.lr_region, lc->uuid + (strlen(lc->uuid) - 8), who); - BUG(); + /* + * This is a valid case, when the following happens: + * 1) a region is recovering and has waiting writes + * 2) recovery fails and calls complete_resync_work (w/ failure) + * 2.1) RU is removed from our list + * 3) waiting writes are released + * 3.1) writes do not mark, because b/c region state != RH_CLEAN + * 4) write fails and calls complete_resync_work (w/ failure) + * 5) boom, we are here. + * + * Not a bug to be here + */ } else if (ru->ru_rw == RU_RECOVER) { if (lr->u.lr_region != lc->recovering_region) { DMERR("Recovering region mismatch from node %u: (%Lu/%Lu)",