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]

Reply via email to