Linus
here is a rather large patch for raid5 in 2.4.0-test13-pre3.
It is a substantial re-write of the stripe-cache handling code,
which is the heart of the raid5 module.
I have been sitting on this for a while so that others can test it
(a few have) and so that I would have had quite a lot of experience
with it myself.
I am now happy that it is ready for inclusion in 2.4.0-testX. I
hope you will be too.
What it does:
- processing of raid5 requests can require several stages
(pre-read, calc parity, write). To accomodate this, request
handling is based on a simple state machine.
Prior to this patch, state was explicitly recorded - there were
different phases "READY", "READOLD", "WRITE" etc.
With this patch, the state is made implicit in the b_state of
the buffers in the cache. This makes the processing code
(handle_stripe) more flexable, and it is easier to add requests
to a stripe at any stage of processing.
- With the above change, we no longer need to wait for a stripe to
"complete" before adding a new request. We at most need to wait
for a spinlock to be released. This allows more parallelism and
provides throughput speeds many times the current speed.
- Without this patch, two buffers are allocated on each stripe in
the cache for each underlying device in the array. This is
wasteful. With the patch, only one buffer is needed per stripe,
per device.
- This patch creates a couple of linked lists of stripes, one for
stripes that are inactive, and one for stripe that need to be
processed by raid5d. This obviates the need to search the hash
table for the stripes of interested in raid5d or when looking
for a free stripe.
There is more work to be done to bring raid5 performance upto the
level of 2.2+mingos-patches, but this is a first, large, step on the
way.
NeilBrown
(2000 line patch included in mail to Linus, but removed from mail to
linux-raid.
If you want it, try
http://www.cse.unsw.edu.au/~neilb/patch/linux/2.4.0-test13-pre3/patch-A-raid5
)
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to [EMAIL PROTECTED]