dm kcopyd: return client directly and not through a pointer
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>
This commit is contained in:
Родитель
5f43ba2950
Коммит
fa34ce7307
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче