[Test-Announce] 2011-09-05 @ 15:00 UTC - Fedora QA Meeting (?)

Bruno Wolff III bruno at wolff.to
Tue Sep 6 03:24:56 UTC 2011


On Mon, Sep 05, 2011 at 12:37:34 -0400,
  "Clyde E. Kunkel" <clydekunkel7734 at cox.net> wrote:
> On 09/05/2011 10:44 AM, Bruno Wolff III wrote:
> > <snip>
> >
> > Neil Brown has a patch for the 3.1 kernel raid issue I am tracking upstream.
> > I'm working on building test kernels and hope to be able to confirm the
> > patch appears to work after a couple of days. (Crashes are random and occur
> > after hours of uptime, so absolute confirmation will be difficult.)
> 
> I see this often and can help test, if you like.

I've attached the patch. You need to build a kernel with it.
Comments can be added to: https://bugzilla.kernel.org/show_bug.cgi?id=41862
-------------- next part --------------
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 32323f0..f4622dd 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1099,12 +1099,11 @@ read_again:
 		bio_list_add(&conf->pending_bio_list, mbio);
 		spin_unlock_irqrestore(&conf->device_lock, flags);
 	}
-	r1_bio_write_done(r1_bio);
-
-	/* In case raid1d snuck in to freeze_array */
-	wake_up(&conf->wait_barrier);
-
+	/* Mustn't call r1_bio_write_done before this next test,
+	 * as it could result in the bio being freed.
+	 */
 	if (sectors_handled < (bio->bi_size >> 9)) {
+		r1_bio_write_done(r1_bio);
 		/* We need another r1_bio.  It has already been counted
 		 * in bio->bi_phys_segments
 		 */
@@ -1117,6 +1116,11 @@ read_again:
 		goto retry_write;
 	}
 
+	r1_bio_write_done(r1_bio);
+
+	/* In case raid1d snuck in to freeze_array */
+	wake_up(&conf->wait_barrier);
+
 	if (do_sync || !bitmap || !plugged)
 		md_wakeup_thread(mddev->thread);
 


More information about the test mailing list