diff options
-rw-r--r-- | drivers/md/dm-kcopyd.c | 9 | ||||
-rw-r--r-- | drivers/md/dm-raid1.c | 6 | ||||
-rw-r--r-- | drivers/md/dm-snap.c | 5 | ||||
-rw-r--r-- | include/linux/dm-kcopyd.h | 2 |
4 files changed, 12 insertions, 10 deletions
diff --git a/drivers/md/dm-kcopyd.c b/drivers/md/dm-kcopyd.c index 579647f8b4d2..819e37eaaeba 100644 --- a/drivers/md/dm-kcopyd.c +++ b/drivers/md/dm-kcopyd.c | |||
@@ -637,14 +637,14 @@ int kcopyd_cancel(struct kcopyd_job *job, int block) | |||
637 | /*----------------------------------------------------------------- | 637 | /*----------------------------------------------------------------- |
638 | * Client setup | 638 | * Client setup |
639 | *---------------------------------------------------------------*/ | 639 | *---------------------------------------------------------------*/ |
640 | int dm_kcopyd_client_create(struct dm_kcopyd_client **result) | 640 | struct dm_kcopyd_client *dm_kcopyd_client_create(void) |
641 | { | 641 | { |
642 | int r = -ENOMEM; | 642 | int r = -ENOMEM; |
643 | struct dm_kcopyd_client *kc; | 643 | struct dm_kcopyd_client *kc; |
644 | 644 | ||
645 | kc = kmalloc(sizeof(*kc), GFP_KERNEL); | 645 | kc = kmalloc(sizeof(*kc), GFP_KERNEL); |
646 | if (!kc) | 646 | if (!kc) |
647 | return -ENOMEM; | 647 | return ERR_PTR(-ENOMEM); |
648 | 648 | ||
649 | spin_lock_init(&kc->job_lock); | 649 | spin_lock_init(&kc->job_lock); |
650 | INIT_LIST_HEAD(&kc->complete_jobs); | 650 | INIT_LIST_HEAD(&kc->complete_jobs); |
@@ -676,8 +676,7 @@ int dm_kcopyd_client_create(struct dm_kcopyd_client **result) | |||
676 | init_waitqueue_head(&kc->destroyq); | 676 | init_waitqueue_head(&kc->destroyq); |
677 | atomic_set(&kc->nr_jobs, 0); | 677 | atomic_set(&kc->nr_jobs, 0); |
678 | 678 | ||
679 | *result = kc; | 679 | return kc; |
680 | return 0; | ||
681 | 680 | ||
682 | bad_io_client: | 681 | bad_io_client: |
683 | client_free_pages(kc); | 682 | client_free_pages(kc); |
@@ -688,7 +687,7 @@ bad_workqueue: | |||
688 | bad_slab: | 687 | bad_slab: |
689 | kfree(kc); | 688 | kfree(kc); |
690 | 689 | ||
691 | return r; | 690 | return ERR_PTR(r); |
692 | } | 691 | } |
693 | EXPORT_SYMBOL(dm_kcopyd_client_create); | 692 | EXPORT_SYMBOL(dm_kcopyd_client_create); |
694 | 693 | ||
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 9defad045418..9bfd057be686 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c | |||
@@ -1115,9 +1115,11 @@ static int mirror_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
1115 | goto err_destroy_wq; | 1115 | goto err_destroy_wq; |
1116 | } | 1116 | } |
1117 | 1117 | ||
1118 | r = dm_kcopyd_client_create(&ms->kcopyd_client); | 1118 | ms->kcopyd_client = dm_kcopyd_client_create(); |
1119 | if (r) | 1119 | if (IS_ERR(ms->kcopyd_client)) { |
1120 | r = PTR_ERR(ms->kcopyd_client); | ||
1120 | goto err_destroy_wq; | 1121 | goto err_destroy_wq; |
1122 | } | ||
1121 | 1123 | ||
1122 | wakeup_mirrord(ms); | 1124 | wakeup_mirrord(ms); |
1123 | return 0; | 1125 | return 0; |
diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c index 5a2296de84a3..9ecff5f3023a 100644 --- a/drivers/md/dm-snap.c +++ b/drivers/md/dm-snap.c | |||
@@ -1111,8 +1111,9 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
1111 | goto bad_hash_tables; | 1111 | goto bad_hash_tables; |
1112 | } | 1112 | } |
1113 | 1113 | ||
1114 | r = dm_kcopyd_client_create(&s->kcopyd_client); | 1114 | s->kcopyd_client = dm_kcopyd_client_create(); |
1115 | if (r) { | 1115 | if (IS_ERR(s->kcopyd_client)) { |
1116 | r = PTR_ERR(s->kcopyd_client); | ||
1116 | ti->error = "Could not create kcopyd client"; | 1117 | ti->error = "Could not create kcopyd client"; |
1117 | goto bad_kcopyd; | 1118 | goto bad_kcopyd; |
1118 | } | 1119 | } |
diff --git a/include/linux/dm-kcopyd.h b/include/linux/dm-kcopyd.h index 312513d4741a..298d587e349b 100644 --- a/include/linux/dm-kcopyd.h +++ b/include/linux/dm-kcopyd.h | |||
@@ -25,7 +25,7 @@ | |||
25 | * To use kcopyd you must first create a dm_kcopyd_client object. | 25 | * To use kcopyd you must first create a dm_kcopyd_client object. |
26 | */ | 26 | */ |
27 | struct dm_kcopyd_client; | 27 | struct dm_kcopyd_client; |
28 | int dm_kcopyd_client_create(struct dm_kcopyd_client **result); | 28 | struct dm_kcopyd_client *dm_kcopyd_client_create(void); |
29 | void dm_kcopyd_client_destroy(struct dm_kcopyd_client *kc); | 29 | void dm_kcopyd_client_destroy(struct dm_kcopyd_client *kc); |
30 | 30 | ||
31 | /* | 31 | /* |