|
@@ -4200,9 +4200,13 @@ static void analyse_stripe(struct stripe_head *sh, struct stripe_head_state *s)
|
|
|
|
|
|
static int clear_batch_ready(struct stripe_head *sh)
|
|
static int clear_batch_ready(struct stripe_head *sh)
|
|
{
|
|
{
|
|
|
|
+ /* Return '1' if this is a member of batch, or
|
|
|
|
+ * '0' if it is a lone stripe or a head which can now be
|
|
|
|
+ * handled.
|
|
|
|
+ */
|
|
struct stripe_head *tmp;
|
|
struct stripe_head *tmp;
|
|
if (!test_and_clear_bit(STRIPE_BATCH_READY, &sh->state))
|
|
if (!test_and_clear_bit(STRIPE_BATCH_READY, &sh->state))
|
|
- return 0;
|
|
|
|
|
|
+ return (sh->batch_head && sh->batch_head != sh);
|
|
spin_lock(&sh->stripe_lock);
|
|
spin_lock(&sh->stripe_lock);
|
|
if (!sh->batch_head) {
|
|
if (!sh->batch_head) {
|
|
spin_unlock(&sh->stripe_lock);
|
|
spin_unlock(&sh->stripe_lock);
|