From: NeilBrown Use "shedule_timeout(2)" instead of yield() as it seems to wait for less time. --- 25-akpm/drivers/md/raid5.c | 3 ++- 25-akpm/drivers/md/raid6main.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff -puN drivers/md/raid5.c~md-use-schedule_timeout drivers/md/raid5.c --- 25/drivers/md/raid5.c~md-use-schedule_timeout Wed Mar 10 15:46:56 2004 +++ 25-akpm/drivers/md/raid5.c Wed Mar 10 15:46:56 2004 @@ -1409,7 +1409,8 @@ static int sync_request (mddev_t *mddev, /* make sure we don't swamp the stripe cache if someone else * is trying to get access */ - yield(); + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(1); } spin_lock(&sh->lock); set_bit(STRIPE_SYNCING, &sh->state); diff -puN drivers/md/raid6main.c~md-use-schedule_timeout drivers/md/raid6main.c --- 25/drivers/md/raid6main.c~md-use-schedule_timeout Wed Mar 10 15:46:56 2004 +++ 25-akpm/drivers/md/raid6main.c Wed Mar 10 15:46:56 2004 @@ -1571,7 +1571,8 @@ static int sync_request (mddev_t *mddev, /* make sure we don't swamp the stripe cache if someone else * is trying to get access */ - yield(); + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(1); } spin_lock(&sh->lock); set_bit(STRIPE_SYNCING, &sh->state); _