mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk, Dan Williams <dan.j.williams@intel.com>,
	NeilBrown <neilb@suse.de>
Subject: [18/26] md/raid5: abort any pending parity operations when array fails.
Date: Fri, 18 Nov 2011 15:58:31 -0800	[thread overview]
Message-ID: <20111119000005.570284097@clark.kroah.org> (raw)
In-Reply-To: <20111119000026.GA6679@kroah.com>

3.0-stable review patch.  If anyone has any objections, please let me know.

------------------

From: NeilBrown <neilb@suse.de>

commit 9a3f530f39f4490eaa18b02719fb74ce5f4d2d86 upstream.

When the number of failed devices exceeds the allowed number
we must abort any active parity operations (checks or updates) as they
are no longer meaningful, and can lead to a BUG_ON in
handle_parity_checks6.

This bug was introduce by commit 6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8
in 2.6.29.

Reported-by: Manish Katiyar <mkatiyar@gmail.com>
Tested-by: Manish Katiyar <mkatiyar@gmail.com>
Acked-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/md/raid5.c |   32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -3120,12 +3120,16 @@ static void handle_stripe5(struct stripe
 	/* check if the array has lost two devices and, if so, some requests might
 	 * need to be failed
 	 */
-	if (s.failed > 1 && s.to_read+s.to_write+s.written)
-		handle_failed_stripe(conf, sh, &s, disks, &return_bi);
-	if (s.failed > 1 && s.syncing) {
-		md_done_sync(conf->mddev, STRIPE_SECTORS,0);
-		clear_bit(STRIPE_SYNCING, &sh->state);
-		s.syncing = 0;
+	if (s.failed > 1) {
+		sh->check_state = 0;
+		sh->reconstruct_state = 0;
+		if (s.to_read+s.to_write+s.written)
+			handle_failed_stripe(conf, sh, &s, disks, &return_bi);
+		if (s.syncing) {
+			md_done_sync(conf->mddev, STRIPE_SECTORS,0);
+			clear_bit(STRIPE_SYNCING, &sh->state);
+			s.syncing = 0;
+		}
 	}
 
 	/* might be able to return some write requests if the parity block
@@ -3412,12 +3416,16 @@ static void handle_stripe6(struct stripe
 	/* check if the array has lost >2 devices and, if so, some requests
 	 * might need to be failed
 	 */
-	if (s.failed > 2 && s.to_read+s.to_write+s.written)
-		handle_failed_stripe(conf, sh, &s, disks, &return_bi);
-	if (s.failed > 2 && s.syncing) {
-		md_done_sync(conf->mddev, STRIPE_SECTORS,0);
-		clear_bit(STRIPE_SYNCING, &sh->state);
-		s.syncing = 0;
+	if (s.failed > 2) {
+		sh->check_state = 0;
+		sh->reconstruct_state = 0;
+		if (s.to_read+s.to_write+s.written)
+			handle_failed_stripe(conf, sh, &s, disks, &return_bi);
+		if (s.syncing) {
+			md_done_sync(conf->mddev, STRIPE_SECTORS,0);
+			clear_bit(STRIPE_SYNCING, &sh->state);
+			s.syncing = 0;
+		}
 	}
 
 	/*



  parent reply	other threads:[~2011-11-19  0:08 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-19  0:00 [00/26] 3.0.10-stable review Greg KH
2011-11-18 23:58 ` [01/26] ALSA: hda - Dont add elements of other codecs to vmaster slave Greg KH
2011-11-18 23:58 ` [02/26] virtio-pci: fix use after free Greg KH
2011-11-18 23:58 ` [03/26] ASoC: Dont use wm8994->control_data in wm8994_readable_register() Greg KH
2011-11-18 23:58 ` [04/26] sh: Fix cached/uncaced address calculation in 29bit mode Greg KH
2011-11-18 23:58 ` [05/26] drm/i915: Fix object refcount leak on mmappable size limit error path Greg KH
2011-11-18 23:58 ` [06/26] drm/nouveau: initialize chan->fence.lock before use Greg KH
2011-11-18 23:58 ` [07/26] drm/radeon/kms: make an aux failure debug only Greg KH
2011-11-18 23:58 ` [08/26] ALSA: usb-audio - Check the dB-range validity in the later read, too Greg KH
2011-11-18 23:58 ` [09/26] ALSA: usb-audio - Fix the missing volume quirks at delayed init Greg KH
2011-11-18 23:58 ` [10/26] KEYS: Fix a NULL pointer deref in the user-defined key type Greg KH
2011-11-18 23:58 ` [11/26] hfs: add sanity check for file name length Greg KH
2011-11-18 23:58 ` [12/26] Revert "leds: save the delay values after a successful call to blink_set()" Greg KH
2011-11-18 23:58 ` [13/26] drm/radeon: add some missing FireMV pci ids Greg KH
2011-11-18 23:58 ` [14/26] drm/i915: enable ring freq scaling, RC6 and graphics turbo on Ivy Bridge v3 Greg KH
2011-11-18 23:58 ` [15/26] sfi: table irq 0xFF means no interrupt Greg KH
2011-11-18 23:58 ` [16/26] x86, mrst: use a temporary variable for SFI irq Greg KH
2011-11-18 23:58 ` [17/26] b43: refuse to load unsupported firmware Greg KH
2011-11-18 23:58 ` Greg KH [this message]
2011-11-18 23:58 ` [19/26] mfd: Fix twl4030 dependencies for audio codec Greg KH
2011-11-18 23:58 ` [20/26] xen:pvhvm: enable PVHVM VCPU placement when using more than 32 CPUs Greg KH
2011-11-18 23:58 ` [21/26] xen-gntalloc: integer overflow in gntalloc_ioctl_alloc() Greg KH
2011-11-18 23:58 ` [22/26] xen-gntalloc: signedness bug in add_grefs() Greg KH
2011-11-18 23:58 ` [23/26] powerpc/ps3: Fix lost SMP IPIs Greg KH
2011-11-18 23:58 ` [24/26] powerpc: Copy down exception vectors after feature fixups Greg KH
2011-11-18 23:58 ` [25/26] backing-dev: ensure wakeup_timer is deleted Greg KH
2011-11-18 23:58 ` [26/26] block: Always check length of all iov entries in blk_rq_map_user_iov() Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111119000005.570284097@clark.kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=dan.j.williams@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®