md: use wait_event() to simplify md_super_wait()
authorNeilBrown <neilb@suse.de>
Tue, 9 Sep 2014 04:20:28 +0000 (14:20 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 14 Oct 2014 02:08:28 +0000 (13:08 +1100)
md_super_wait is really just wait_event() open-coded.
So use the macro instead.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c

index 4c72e96..6be7146 100644 (file)
@@ -766,14 +766,7 @@ void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
 void md_super_wait(struct mddev *mddev)
 {
        /* wait for all superblock writes that were scheduled to complete */
-       DEFINE_WAIT(wq);
-       for(;;) {
-               prepare_to_wait(&mddev->sb_wait, &wq, TASK_UNINTERRUPTIBLE);
-               if (atomic_read(&mddev->pending_writes)==0)
-                       break;
-               schedule();
-       }
-       finish_wait(&mddev->sb_wait, &wq);
+       wait_event(mddev->sb_wait, atomic_read(&mddev->pending_writes)==0);
 }
 
 int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,