[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