• Dan Williams's avatar
    md: handle operation chaining in raid5_run_ops · 7b3a871e
    Dan Williams authored
    From: Dan Williams <dan.j.williams@intel.com>
    
    Neil said:
    > At the end of ops_run_compute5 you have:
    >         /* ack now if postxor is not set to be run */
    >         if (tx && !test_bit(STRIPE_OP_POSTXOR, &s->ops_run))
    >                 async_tx_ack(tx);
    >
    > It looks odd having that test there.  Would it fit in raid5_run_ops
    > better?
    
    The intended global interpretation is that raid5_run_ops can build a chain
    of xor and memcpy operations.  When MD registers the compute-xor it tells
    async_tx to keep the operation handle around so that another item in the
    dependency chain can be submitted. If we are just computing a block to
    satisfy a read then we can terminate the chain immediately.  raid5_run_ops
    gives a better context for this test since it cares about the entire chain.
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    7b3a871e
raid5.c 131 KB