dm kcopyd: return client directly and not through a pointer
authorMikulas Patocka <mpatocka@redhat.com>
Sun, 29 May 2011 12:03:13 +0000 (13:03 +0100)
committerAlasdair G Kergon <agk@redhat.com>
Sun, 29 May 2011 12:03:13 +0000 (13:03 +0100)
Return client directly from dm_kcopyd_client_create, not through a
parameter, making it consistent with dm_io_client_create.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
drivers/md/dm-kcopyd.c
drivers/md/dm-raid1.c
drivers/md/dm-snap.c
include/linux/dm-kcopyd.h

index 579647f8b4d23a478ae9201d9486d124232f0527..819e37eaaeba17cc3acf8009432f7b99f3dea4dd 100644 (file)
@@ -637,14 +637,14 @@ int kcopyd_cancel(struct kcopyd_job *job, int block)
 /*-----------------------------------------------------------------
  * Client setup
  *---------------------------------------------------------------*/
-int dm_kcopyd_client_create(struct dm_kcopyd_client **result)
+struct dm_kcopyd_client *dm_kcopyd_client_create(void)
 {
        int r = -ENOMEM;
        struct dm_kcopyd_client *kc;
 
        kc = kmalloc(sizeof(*kc), GFP_KERNEL);
        if (!kc)
-               return -ENOMEM;
+               return ERR_PTR(-ENOMEM);
 
        spin_lock_init(&kc->job_lock);
        INIT_LIST_HEAD(&kc->complete_jobs);
@@ -676,8 +676,7 @@ int dm_kcopyd_client_create(struct dm_kcopyd_client **result)
        init_waitqueue_head(&kc->destroyq);
        atomic_set(&kc->nr_jobs, 0);
 
-       *result = kc;
-       return 0;
+       return kc;
 
 bad_io_client:
        client_free_pages(kc);
@@ -688,7 +687,7 @@ bad_workqueue:
 bad_slab:
        kfree(kc);
 
-       return r;
+       return ERR_PTR(r);
 }
 EXPORT_SYMBOL(dm_kcopyd_client_create);
 
index 9defad0454181ed8c80abcf8681e6479da4ea74e..9bfd057be6869dff2aba03a498b20e1c148ba4c8 100644 (file)
@@ -1115,9 +1115,11 @@ static int mirror_ctr(struct dm_target *ti, unsigned int argc, char **argv)
                goto err_destroy_wq;
        }
 
-       r = dm_kcopyd_client_create(&ms->kcopyd_client);
-       if (r)
+       ms->kcopyd_client = dm_kcopyd_client_create();
+       if (IS_ERR(ms->kcopyd_client)) {
+               r = PTR_ERR(ms->kcopyd_client);
                goto err_destroy_wq;
+       }
 
        wakeup_mirrord(ms);
        return 0;
index 5a2296de84a3d900db6e176a8ac049cbd5ee04f6..9ecff5f3023a4c4f0721b958ef1541e762e910ff 100644 (file)
@@ -1111,8 +1111,9 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)
                goto bad_hash_tables;
        }
 
-       r = dm_kcopyd_client_create(&s->kcopyd_client);
-       if (r) {
+       s->kcopyd_client = dm_kcopyd_client_create();
+       if (IS_ERR(s->kcopyd_client)) {
+               r = PTR_ERR(s->kcopyd_client);
                ti->error = "Could not create kcopyd client";
                goto bad_kcopyd;
        }
index 312513d4741a706cdf2377069e1f98c5fdd225fd..298d587e349b17169ad1a295645f66e307f42ff4 100644 (file)
@@ -25,7 +25,7 @@
  * To use kcopyd you must first create a dm_kcopyd_client object.
  */
 struct dm_kcopyd_client;
-int dm_kcopyd_client_create(struct dm_kcopyd_client **result);
+struct dm_kcopyd_client *dm_kcopyd_client_create(void);
 void dm_kcopyd_client_destroy(struct dm_kcopyd_client *kc);
 
 /*