<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/md/raid10.c, branch linux-2.6.22.y</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=linux-2.6.22.y</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=linux-2.6.22.y'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2007-08-09T21:27:36+00:00</updated>
<entry>
<title>md: raid10: fix use-after-free of bio</title>
<updated>2007-08-09T21:27:36+00:00</updated>
<author>
<name>Maik Hampel</name>
<email>m.hampel@gmx.de</email>
</author>
<published>2007-07-31T07:37:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=058bfc1cc6700c210024dd9fd391ea8fbbb6c91a'/>
<id>urn:sha1:058bfc1cc6700c210024dd9fd391ea8fbbb6c91a</id>
<content type='text'>
In case of read errors raid10d tries to print a nice error message,
unfortunately using data from an already put bio.

Signed-off-by: Maik Hampel &lt;m.hampel@gmx.de&gt;
Acked-By: NeilBrown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;


</content>
</entry>
<entry>
<title>md: handle writes to broken raid10 arrays gracefully</title>
<updated>2007-08-09T21:27:36+00:00</updated>
<author>
<name>Arne Redlich</name>
<email>agr@powerkom-dd.de</email>
</author>
<published>2007-07-31T07:37:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1eb34652551146be64def511d34a02178d9b00cd'/>
<id>urn:sha1:1eb34652551146be64def511d34a02178d9b00cd</id>
<content type='text'>
When writing to a broken array, raid10 currently happily emits empty bio
lists.  IOW, the master bio will never be completed, sending writers to
UNINTERRUPTIBLE_SLEEP forever.

Signed-off-by: Arne Redlich &lt;agr@powerkom-dd.de&gt;
Acked-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>md: fix two raid10 bugs</title>
<updated>2007-06-16T20:16:15+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.de</email>
</author>
<published>2007-06-16T17:16:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=af03b8e4e81c3789e597632268940edd11ffe870'/>
<id>urn:sha1:af03b8e4e81c3789e597632268940edd11ffe870</id>
<content type='text'>
1/ When resyncing a degraded raid10 which has more than 2 copies of each block,
  garbage can get synced on top of good data.

2/ We round the wrong way in part of the device size calculation, which
  can cause confusion.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] md: fix raid10 recovery problem.</title>
<updated>2007-03-01T22:53:36+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.de</email>
</author>
<published>2007-03-01T04:11:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=64a742bc61f9115b0bb270fa081e5b5b9c35dcd0'/>
<id>urn:sha1:64a742bc61f9115b0bb270fa081e5b5b9c35dcd0</id>
<content type='text'>
There are two errors that can lead to recovery problems with raid10
when used in 'far' more (not the default).

Due to a '&gt;' instead of '&gt;=' the wrong block is located which would result in
garbage being written to some random location, quite possible outside the
range of the device, causing the newly reconstructed device to fail.

The device size calculation had some rounding errors (it didn't round when it
should) and so recovery would go a few blocks too far which would again cause
a write to a random block address and probably a device error.

The code for working with device sizes was fairly confused and spread out, so
this has been tided up a bit.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] md: pass down BIO_RW_SYNC in raid{1,10}</title>
<updated>2007-01-12T02:18:21+00:00</updated>
<author>
<name>Lars Ellenberg</name>
<email>Lars.Ellenberg@linbit.com</email>
</author>
<published>2007-01-11T07:15:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=e3881a6816b45668df60a426e5c3431ece1539a7'/>
<id>urn:sha1:e3881a6816b45668df60a426e5c3431ece1539a7</id>
<content type='text'>
md raidX make_request functions strip off the BIO_RW_SYNC flag, thus
introducing additional latency.

Fixing this in raid1 and raid10 seems to be straightforward enough.

For our particular usage case in DRBD, passing this flag improved some
initialization time from ~5 minutes to ~5 seconds.

Acked-by: NeilBrown &lt;neilb@suse.de&gt;
Signed-off-by: Lars Ellenberg &lt;lars@linbit.com&gt;
Acked-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] md: Don't assume that READ==0 and WRITE==1 - use the names explicitly</title>
<updated>2006-12-13T17:05:48+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.de</email>
</author>
<published>2006-12-13T08:34:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=802ba064c49f655d20fed563f2a4924c8256ea10'/>
<id>urn:sha1:802ba064c49f655d20fed563f2a4924c8256ea10</id>
<content type='text'>
Thanks Jens for alerting me to this.

Cc: Jens Axboe &lt;jens.axboe@oracle.com&gt;
Cc: &lt;raziebe@gmail.com&gt;
Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] md: fix printk format warnings, seen on powerpc64:</title>
<updated>2006-10-28T18:30:52+00:00</updated>
<author>
<name>Randy Dunlap</name>
<email>randy.dunlap@oracle.com</email>
</author>
<published>2006-10-28T17:38:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=969b755aadf7bcf3df5991a127a103acd0145a52'/>
<id>urn:sha1:969b755aadf7bcf3df5991a127a103acd0145a52</id>
<content type='text'>
drivers/md/raid1.c:1479: warning: long long unsigned int format, long unsigned int arg (arg 4)
drivers/md/raid10.c:1475: warning: long long unsigned int format, long unsigned int arg (arg 4)

Signed-off-by: Randy Dunlap &lt;randy.dunlap@oracle.com&gt;
Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] md: fix calculation of -&gt;degraded for multipath and raid10</title>
<updated>2006-10-21T20:35:05+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.de</email>
</author>
<published>2006-10-21T17:24:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=2e333e89860431d22816c1bdaa2ea72c2753396e'/>
<id>urn:sha1:2e333e89860431d22816c1bdaa2ea72c2753396e</id>
<content type='text'>
Two less-used md personalities have bugs in the calculation of -&gt;degraded (the
extent to which the array is degraded).

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] md: define -&gt;congested_fn for raid1, raid10, and multipath</title>
<updated>2006-10-03T15:04:18+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.de</email>
</author>
<published>2006-10-03T08:15:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=0d12922823408b26f83b15cae4a4feff4bd22f28'/>
<id>urn:sha1:0d12922823408b26f83b15cae4a4feff4bd22f28</id>
<content type='text'>
raid1, raid10 and multipath don't report their 'congested' status through
bdi_*_congested, but should.

This patch adds the appropriate functions which just check the 'congested'
status of all active members (with appropriate locking).

raid1 read_balance should be modified to prefer devices where
bdi_read_congested returns false.  Then we could use the '&amp;' branch rather
than the '|' branch.  However that should would need some benchmarking first
to make sure it is actually a good idea.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] md: Improve locking around error handling</title>
<updated>2006-10-03T15:04:18+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.de</email>
</author>
<published>2006-10-03T08:15:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c04be0aa82ff535e3676ab3e573957bdeef41879'/>
<id>urn:sha1:c04be0aa82ff535e3676ab3e573957bdeef41879</id>
<content type='text'>
The error handling routines don't use proper locking, and so two concurrent
errors could trigger a problem.

So:
  - use test-and-set and test-and-clear to synchonise
    the In_sync bits with the -&gt;degraded count
  - use the spinlock to protect updates to the
    degraded count (could use an atomic_t but that
    would be a bigger change in code, and isn't
    really justified)
  - remove un-necessary locking in raid5

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
</feed>
