<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/md/raid5.c, branch linux-2.6.23.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.23.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.23.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2008-02-08T20:01:44Z</updated>
<entry>
<title>md: fix data corruption when a degraded raid5 array is reshaped</title>
<updated>2008-02-08T20:01:44Z</updated>
<author>
<name>Dan Williams</name>
</author>
<published>2008-01-08T23:32:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7b21cc0a0e0787b428948873f5b7d3f67e938ef2'/>
<id>urn:sha1:7b21cc0a0e0787b428948873f5b7d3f67e938ef2</id>
<content type='text'>
patch 0f94e87cdeaaac9f0f9a28a5dd2a5070b87cd3e8 in mainline.

We currently do not wait for the block from the missing device to be
computed from parity before copying data to the new stripe layout.

The change in the raid6 code is not techincally needed as we don't delay
data block recovery in the same way for raid6 yet.  But making the change
now is safer long-term.

This bug exists in 2.6.23 and 2.6.24-rc

Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Acked-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;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>raid5: fix unending write sequence</title>
<updated>2007-11-26T17:42:28Z</updated>
<author>
<name>Dan Williams</name>
</author>
<published>2007-11-15T00:59:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=701628909451df9e52b02442893a9a6e6cb66cd7'/>
<id>urn:sha1:701628909451df9e52b02442893a9a6e6cb66cd7</id>
<content type='text'>
patch 6c55be8b962f1bdc592d579e81fc27b11ea53dfc in mainline.

&lt;debug output from Joel's system&gt;
handling stripe 7629696, state=0x14 cnt=1, pd_idx=2 ops=0:0:0
check 5: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800ffcffcc0 written 0000000000000000
check 4: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800fdd4e360 written 0000000000000000
check 3: state 0x1 toread 0000000000000000 read 0000000000000000 write 0000000000000000 written 0000000000000000
check 2: state 0x1 toread 0000000000000000 read 0000000000000000 write 0000000000000000 written 0000000000000000
check 1: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800ff517e40 written 0000000000000000
check 0: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800fd4cae60 written 0000000000000000
locked=4 uptodate=2 to_read=0 to_write=4 failed=0 failed_num=0
for sector 7629696, rmw=0 rcw=0
&lt;/debug&gt;

These blocks were prepared to be written out, but were never handled in
ops_run_biodrain(), so they remain locked forever.  The operations flags
are all clear which means handle_stripe() thinks nothing else needs to be
done.

This state suggests that the STRIPE_OP_PREXOR bit was sampled 'set' when it
should not have been.  This patch cleans up cases where the code looks at
sh-&gt;ops.pending when it should be looking at the consistent stack-based
snapshot of the operations flags.

Report from Joel:
	Resync done. Patch fix this bug.

Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Tested-by: Joel Bertrand &lt;joel.bertrand@systella.fr&gt;
Cc: &lt;stable@kernel.org&gt;
Cc: 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;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>md: raid5: fix clearing of biofill operations</title>
<updated>2007-11-16T17:30:22Z</updated>
<author>
<name>Dan Williams</name>
</author>
<published>2007-10-23T03:45:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1094650c9b3d035380ae3f5add3debea89007113'/>
<id>urn:sha1:1094650c9b3d035380ae3f5add3debea89007113</id>
<content type='text'>
raid5: fix clearing of biofill operations

This is the correct merge of the two upstream patches for this issue (it
was mis-merged...)

ops_complete_biofill() runs outside of spin_lock(&amp;sh-&gt;lock) and clears the
'pending' and 'ack' bits.  Since the test_and_ack_op() macro only checks
against 'complete' it can get an inconsistent snapshot of pending work.

Move the clearing of these bits to handle_stripe5(), under the lock.

Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Tested-by: Joel Bertrand &lt;joel.bertrand@systella.fr&gt;
Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>raid5: fix 2 bugs in ops_complete_biofill</title>
<updated>2007-09-24T20:23:35Z</updated>
<author>
<name>Dan Williams</name>
</author>
<published>2007-09-24T17:06:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e4d84909dd48b5e5806a5d18b881e1ca1610ba9b'/>
<id>urn:sha1:e4d84909dd48b5e5806a5d18b881e1ca1610ba9b</id>
<content type='text'>
1/ ops_complete_biofill tried to avoid calling handle_stripe since all the
state necessary to return read completions is available.  However the
process of determining whether more read requests are pending requires
locking the stripe (to block add_stripe_bio from updating dev-&gt;toead).
ops_complete_biofill can run in tasklet context, so rather than upgrading
all the stripe locks from spin_lock to spin_lock_bh this patch just
unconditionally reschedules handle_stripe after completing the read
request.

2/ ops_complete_biofill needlessly qualified processing R5_Wantfill with
dev-&gt;toread.  The result being that the 'biofill' pending bit is cleared
before handling the pending read-completions on dev-&gt;read.  R5_Wantfill can
be unconditionally handled because the 'biofill' pending bit prevents new
R5_Wantfill requests from being seen by ops_run_biofill and
ops_complete_biofill.

Found-by: Yuri Tikhonov &lt;yur@emcraft.com&gt;
[neilb@suse.de: simpler fix for bug 1 than moving code]
Signed-off-by: NeilBrown &lt;neilb@suse.de&gt;
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
<entry>
<title>md: fix some bugs with growing raid5/raid6 arrays.</title>
<updated>2007-09-12T00:21:19Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2007-09-11T22:23:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a2e0855182e2be26b252745b2bb7558705cb0dd2'/>
<id>urn:sha1:a2e0855182e2be26b252745b2bb7558705cb0dd2</id>
<content type='text'>
The recent changed to raid5 to allow offload of parity calculation etc
introduced some bugs in the code for growing (i.e.  adding a disk to) raid5
and raid6.  This fixes them

Acked-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
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>[BLOCK] Get rid of request_queue_t typedef</title>
<updated>2007-07-24T07:28:11Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2007-07-24T07:28:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=165125e1e480f9510a5ffcfbfee4e3ee38c05f23'/>
<id>urn:sha1:165125e1e480f9510a5ffcfbfee4e3ee38c05f23</id>
<content type='text'>
Some of the code has been gradually transitioned to using the proper
struct request_queue, but there's lots left. So do a full sweet of
the kernel and get rid of this typedef and replace its uses with
the proper type.

Signed-off-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
</content>
</entry>
<entry>
<title>async_tx: fix kmap_atomic usage in async_memcpy</title>
<updated>2007-07-20T15:44:19Z</updated>
<author>
<name>Dan Williams</name>
</author>
<published>2007-07-20T07:31:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=eb0645a8b1f14da300f40bb9f424640cd1181fbf'/>
<id>urn:sha1:eb0645a8b1f14da300f40bb9f424640cd1181fbf</id>
<content type='text'>
Andrew Morton:
	[async_memcpy] is very wrong if both ASYNC_TX_KMAP_DST and
	ASYNC_TX_KMAP_SRC can ever be set.  We'll end up using the same kmap
	slot for both src add dest and we get either corrupted data or a BUG.

Evgeniy Polyakov:
	Btw, shouldn't it always be kmap_atomic() even if flag is not set.
	That pages are usual one returned by alloc_page().

So fix the usage of kmap_atomic and kill the ASYNC_TX_KMAP_DST and
ASYNC_TX_KMAP_SRC flags.

Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: Evgeniy Polyakov &lt;johnpol@2ka.mipt.ru&gt;
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&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>mm: Remove slab destructors from kmem_cache_create().</title>
<updated>2007-07-20T01:11:58Z</updated>
<author>
<name>Paul Mundt</name>
</author>
<published>2007-07-20T01:11:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=20c2df83d25c6a95affe6157a4c9cac4cf5ffaac'/>
<id>urn:sha1:20c2df83d25c6a95affe6157a4c9cac4cf5ffaac</id>
<content type='text'>
Slab destructors were no longer supported after Christoph's
c59def9f222d44bb7e2f0a559f2906191a0862d7 change. They've been
BUGs for both slab and slub, and slob never supported them
either.

This rips out support for the dtor pointer from kmem_cache_create()
completely and fixes up every single callsite in the kernel (there were
about 224, not including the slab allocator definitions themselves,
or the documentation references).

Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>md: remove raid5 compute_block and compute_parity5</title>
<updated>2007-07-13T15:06:18Z</updated>
<author>
<name>Dan Williams</name>
</author>
<published>2007-01-02T20:52:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6dff381af01006ffae3c23cd2e07e30584de0ec'/>
<id>urn:sha1:f6dff381af01006ffae3c23cd2e07e30584de0ec</id>
<content type='text'>
replaced by raid5_run_ops

Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Acked-By: NeilBrown &lt;neilb@suse.de&gt;
</content>
</entry>
<entry>
<title>md: handle_stripe5 - request io processing in raid5_run_ops</title>
<updated>2007-07-13T15:06:17Z</updated>
<author>
<name>Dan Williams</name>
</author>
<published>2007-01-02T20:52:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=830ea01673a397798d1281d2022615559f5001bb'/>
<id>urn:sha1:830ea01673a397798d1281d2022615559f5001bb</id>
<content type='text'>
I/O submission requests were already handled outside of the stripe lock in
handle_stripe.  Now that handle_stripe is only tasked with finding work,
this logic belongs in raid5_run_ops.

Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Acked-By: NeilBrown &lt;neilb@suse.de&gt;
</content>
</entry>
</feed>
