• Dan Williams's avatar
    md: handle_stripe5 - add request/completion logic for async write ops · e33129d8
    Dan Williams authored
    After handle_stripe5 decides whether it wants to perform a
    read-modify-write, or a reconstruct write it calls
    handle_write_operations5.  A read-modify-write operation will perform an
    xor subtraction of the blocks marked with the R5_Wantprexor flag, copy the
    new data into the stripe (biodrain) and perform a postxor operation across
    all up-to-date blocks to generate the new parity.  A reconstruct write is run
    when all blocks are already up-to-date in the cache so all that is needed
    is a biodrain and postxor.
    
    On the completion path STRIPE_OP_PREXOR will be set if the operation was a
    read-modify-write.  The STRIPE_OP_BIODRAIN flag is used in the completion
    path to differentiate write-initiated postxor operations versus
    expansion-initiated postxor operations.  Completion of a write triggers i/o
    to the drives.
    
    Changelog:
    * make the 'rcw' parameter to handle_write_operations5 a simple flag, Neil Brown
    * remove test_and_set/test_and_clear BUG_ONs, Neil Brown
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Acked-By: default avatarNeilBrown <neilb@suse.de>
    e33129d8
raid5.c 132 KB