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 chainof xor and memcpy operations. When MD registers the compute-xor it tellsasync_tx to keep the operation handle around so that another item in thedependency chain can be submitted. If we are just computing a block tosatisfy a read then we can terminate the chain immediately. raid5_run_opsgives a better context for this test since it cares about the entire chain.