[kernel] r13737 - in dists/lenny/linux-2.6/debian: . patches/bugfix/all patches/series

Dann Frazier dannf at alioth.debian.org
Sat Jun 6 14:53:25 UTC 2009


Author: dannf
Date: Sat Jun  6 14:53:23 2009
New Revision: 13737

Log:
Fix soft lockups caused by one md resync blocking on another due
to sharing the same device (closes: #514627)

Added:
   dists/lenny/linux-2.6/debian/patches/bugfix/all/md-dont-wait-uninterruptible-for-other-resync-to-finish.patch
Modified:
   dists/lenny/linux-2.6/debian/changelog
   dists/lenny/linux-2.6/debian/patches/series/16

Modified: dists/lenny/linux-2.6/debian/changelog
==============================================================================
--- dists/lenny/linux-2.6/debian/changelog	Sat Jun  6 11:53:20 2009	(r13736)
+++ dists/lenny/linux-2.6/debian/changelog	Sat Jun  6 14:53:23 2009	(r13737)
@@ -40,6 +40,8 @@
   [ dann frazier ]
   * [x86] fix IBM Summit based systems' phys_cpu_present_map on 32-bit
     kernels (closes: #529312)
+  * Fix soft lockups caused by one md resync blocking on another due
+    to sharing the same device (closes: #514627)
 
  -- maximilian attems <maks at debian.org>  Mon, 30 Mar 2009 17:11:49 +0200
 

Added: dists/lenny/linux-2.6/debian/patches/bugfix/all/md-dont-wait-uninterruptible-for-other-resync-to-finish.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/lenny/linux-2.6/debian/patches/bugfix/all/md-dont-wait-uninterruptible-for-other-resync-to-finish.patch	Sat Jun  6 14:53:23 2009	(r13737)
@@ -0,0 +1,44 @@
+commit 9744197c3d7b329590c2be33ad7b17409bd798fe
+Author: NeilBrown <neilb at suse.de>
+Date:   Fri Sep 19 11:49:54 2008 +1000
+
+    md: Don't wait UNINTERRUPTIBLE for other resync to finish
+    
+    When two md arrays share some block device (e.g each uses different
+    partitions on the one device), a resync of one array will wait for
+    the resync on the other to finish.
+    
+    This can be a long time and as it currently waits TASK_UNINTERRUPTIBLE,
+    the softlockup code notices and complains.
+    
+    So use TASK_INTERRUPTIBLE instead and make sure to flush signals
+    before calling schedule.
+    
+    Signed-off-by: NeilBrown <neilb at suse.de>
+
+diff --git a/drivers/md/md.c b/drivers/md/md.c
+index 4790c83..deeac4b 100644
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -5761,7 +5761,11 @@ void md_do_sync(mddev_t *mddev)
+ 					 * time 'round when curr_resync == 2
+ 					 */
+ 					continue;
+-				prepare_to_wait(&resync_wait, &wq, TASK_UNINTERRUPTIBLE);
++				/* We need to wait 'interruptible' so as not to
++				 * contribute to the load average, and not to
++				 * be caught by 'softlockup'
++				 */
++				prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE);
+ 				if (!kthread_should_stop() &&
+ 				    mddev2->curr_resync >= mddev->curr_resync) {
+ 					printk(KERN_INFO "md: delaying %s of %s"
+@@ -5769,6 +5773,8 @@ void md_do_sync(mddev_t *mddev)
+ 					       " share one or more physical units)\n",
+ 					       desc, mdname(mddev), mdname(mddev2));
+ 					mddev_put(mddev2);
++					if (signal_pending(current))
++						flush_signals(current);
+ 					schedule();
+ 					finish_wait(&resync_wait, &wq);
+ 					goto try_again;

Modified: dists/lenny/linux-2.6/debian/patches/series/16
==============================================================================
--- dists/lenny/linux-2.6/debian/patches/series/16	Sat Jun  6 11:53:20 2009	(r13736)
+++ dists/lenny/linux-2.6/debian/patches/series/16	Sat Jun  6 14:53:23 2009	(r13737)
@@ -7,3 +7,4 @@
 + features/all/xen/xen-blkfront-add-the-CDROM_GET_CAPABILITY-ioctl.patch
 + features/all/xen/xen-blkfront-make-blkif_ioctl-static.patch
 + features/all/ftdi_sio-sheevaplug.patch
++ bugfix/all/md-dont-wait-uninterruptible-for-other-resync-to-finish.patch



More information about the Kernel-svn-changes mailing list