dm: convert wait loops to use autoremove_wake_function()
authorBart Van Assche <bart.vanassche@sandisk.com>
Wed, 31 Aug 2016 22:16:43 +0000 (15:16 -0700)
committerMike Snitzer <snitzer@redhat.com>
Wed, 14 Sep 2016 17:56:38 +0000 (13:56 -0400)
Use autoremove_wake_function() instead of default_wake_function()
to make the dm wait loops more similar to other wait loops in the
kernel.  This patch does not change any functionality.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-mpath.c
drivers/md/dm.c

index 15db5e9..c777d38 100644 (file)
@@ -1193,21 +1193,17 @@ static int multipath_ctr(struct dm_target *ti, unsigned argc, char **argv)
 
 static void multipath_wait_for_pg_init_completion(struct multipath *m)
 {
-       DECLARE_WAITQUEUE(wait, current);
-
-       add_wait_queue(&m->pg_init_wait, &wait);
+       DEFINE_WAIT(wait);
 
        while (1) {
-               set_current_state(TASK_UNINTERRUPTIBLE);
+               prepare_to_wait(&m->pg_init_wait, &wait, TASK_UNINTERRUPTIBLE);
 
                if (!atomic_read(&m->pg_init_in_progress))
                        break;
 
                io_schedule();
        }
-       set_current_state(TASK_RUNNING);
-
-       remove_wait_queue(&m->pg_init_wait, &wait);
+       finish_wait(&m->pg_init_wait, &wait);
 }
 
 static void flush_multipath_work(struct multipath *m)
index 6678cb2..be35258 100644 (file)
@@ -1944,12 +1944,10 @@ EXPORT_SYMBOL_GPL(dm_put);
 static int dm_wait_for_completion(struct mapped_device *md, long task_state)
 {
        int r = 0;
-       DECLARE_WAITQUEUE(wait, current);
-
-       add_wait_queue(&md->wait, &wait);
+       DEFINE_WAIT(wait);
 
        while (1) {
-               set_current_state(task_state);
+               prepare_to_wait(&md->wait, &wait, task_state);
 
                if (!md_in_flight(md))
                        break;
@@ -1961,9 +1959,7 @@ static int dm_wait_for_completion(struct mapped_device *md, long task_state)
 
                io_schedule();
        }
-       set_current_state(TASK_RUNNING);
-
-       remove_wait_queue(&md->wait, &wait);
+       finish_wait(&md->wait, &wait);
 
        return r;
 }