]>
Commit | Line | Data |
---|---|---|
08aa9d92 | 1 | --- linux-2.6.33/scripts/mod/modpost.c~ 2010-02-24 19:52:17.000000000 +0100 |
2 | +++ linux-2.6.33/scripts/mod/modpost.c 2010-03-07 14:26:47.242168558 +0100 | |
3 | @@ -15,7 +15,8 @@ | |
4 | #include <stdio.h> | |
5 | #include <ctype.h> | |
6 | #include "modpost.h" | |
7 | -#include "../../include/generated/autoconf.h" | |
8 | +// PLD architectures don't use CONFIG_SYMBOL_PREFIX | |
9 | +//#include "../../include/generated/autoconf.h" | |
10 | #include "../../include/linux/license.h" | |
11 | ||
12 | /* Some toolchains use a `_' prefix for all user symbols. */ | |
13 | ||
2136e199 AM |
14 | --- linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh~ 2011-07-22 04:17:23.000000000 +0200 |
15 | +++ linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh 2011-08-25 21:26:04.799150642 +0200 | |
16 | @@ -9,6 +9,12 @@ | |
17 | $cc -print-file-name=lib${lib}.${ext} | grep -q / | |
18 | if [ $? -eq 0 ]; then | |
19 | echo "-l${lib}" | |
20 | + for libt in tinfow tinfo ; do | |
21 | + $cc -print-file-name=lib${libt}.${ext} | grep -q / | |
22 | + if [ $? -eq 0 ]; then | |
23 | + echo "-l${libt}" | |
24 | + fi | |
25 | + done | |
26 | exit | |
27 | fi | |
28 | done | |
44c0f99c | 29 | |
d16112f7 AM |
30 | |
31 | Hi all, | |
32 | There is a risk of data loss with md/raid6 arrays running on Linux since | |
33 | 2.6.32. | |
34 | If: | |
35 | - the array is doubly degraded | |
36 | - one or both failed devices are being recovered, and | |
37 | - the array is written to | |
38 | ||
39 | then it is possible for data on the array to be lost. The patch below fixes | |
40 | the problem. If you apply the patch to an older kernel which has separate | |
41 | handle_stripe5() and handle_stripe6() functions, be sure that patch changes | |
42 | handle_stripe6(). | |
43 | ||
44 | There is no risk to an optimal array or a singly-degraded array. There is | |
45 | also no risk on a doubly-degraded array which is not recovering a device or | |
46 | is not receiving write requests. | |
47 | ||
48 | If you have data on a RAID6 array, please consider how to avoid corruption, | |
49 | possibly by applying the patch, possibly by removing any hot spares so | |
50 | recovery does not automatically start. | |
51 | ||
52 | This patch will be sent upstream shortly and will subsequently appear in | |
53 | future "-stable" kernels. | |
54 | ||
55 | NeilBrown | |
56 | ||
57 | From f94e37dce722ec7b6666fd04be357f422daa02b5 Mon Sep 17 00:00:00 2001 | |
58 | From: NeilBrown <neilb@suse.de> | |
59 | Date: Wed, 13 Aug 2014 09:57:07 +1000 | |
60 | Subject: [PATCH] md/raid6: avoid data corruption during recovery of | |
61 | double-degraded RAID6 | |
62 | ||
63 | During recovery of a double-degraded RAID6 it is possible for | |
64 | some blocks not to be recovered properly, leading to corruption. | |
65 | ||
66 | If a write happens to one block in a stripe that would be written to a | |
67 | missing device, and at the same time that stripe is recovering data | |
68 | to the other missing device, then that recovered data may not be written. | |
69 | ||
70 | This patch skips, in the double-degraded case, an optimisation that is | |
71 | only safe for single-degraded arrays. | |
72 | ||
73 | Bug was introduced in 2.6.32 and fix is suitable for any kernel since | |
74 | then. In an older kernel with separate handle_stripe5() and | |
75 | handle_stripe6() functions that patch must change handle_stripe6(). | |
76 | ||
77 | Cc: stable@vger.kernel.org (2.6.32+) | |
78 | Fixes: 6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8 | |
79 | Cc: Yuri Tikhonov <yur@emcraft.com> | |
80 | Cc: Dan Williams <dan.j.williams@intel.com> | |
81 | Reported-by: "Manibalan P" <pmanibalan@amiindia.co.in> | |
82 | Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1090423 | |
83 | Signed-off-by: NeilBrown <neilb@suse.de> | |
84 | ||
85 | diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c | |
86 | index 6b2d615d1094..183588b11fc1 100644 | |
87 | --- a/drivers/md/raid5.c | |
88 | +++ b/drivers/md/raid5.c | |
89 | @@ -3817,6 +3817,8 @@ static void handle_stripe(struct stripe_head *sh) | |
90 | set_bit(R5_Wantwrite, &dev->flags); | |
91 | if (prexor) | |
92 | continue; | |
93 | + if (s.failed > 1) | |
94 | + continue; | |
95 | if (!test_bit(R5_Insync, &dev->flags) || | |
96 | ((i == sh->pd_idx || i == sh->qd_idx) && | |
97 | s.failed == 0)) | |
98 | ||
99 |