dm kcopyd: remove offset field from job structure
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / md / dm-kcopyd.c
index 579647f..e7926fa 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 #include <linux/types.h>
-#include <asm/atomic.h>
+#include <linux/atomic.h>
 #include <linux/blkdev.h>
 #include <linux/fs.h>
 #include <linux/init.h>
@@ -224,7 +224,6 @@ struct kcopyd_job {
        unsigned int num_dests;
        struct dm_io_region dests[DM_KCOPYD_MAX_REGIONS];
 
-       sector_t offset;
        unsigned int nr_pages;
        struct page_list *pages;
 
@@ -380,7 +379,7 @@ static int run_io_job(struct kcopyd_job *job)
                .bi_rw = job->rw,
                .mem.type = DM_IO_PAGE_LIST,
                .mem.ptr.pl = job->pages,
-               .mem.offset = job->offset,
+               .mem.offset = 0,
                .notify.fn = complete_io,
                .notify.context = job,
                .client = job->kc->io_client,
@@ -398,8 +397,7 @@ static int run_pages_job(struct kcopyd_job *job)
 {
        int r;
 
-       job->nr_pages = dm_div_up(job->dests[0].count + job->offset,
-                                 PAGE_SIZE >> 9);
+       job->nr_pages = dm_div_up(job->dests[0].count, PAGE_SIZE >> 9);
        r = kcopyd_get_pages(job->kc, job->nr_pages, &job->pages);
        if (!r) {
                /* this job is ready for io */
@@ -602,7 +600,6 @@ int dm_kcopyd_copy(struct dm_kcopyd_client *kc, struct dm_io_region *from,
        job->num_dests = num_dests;
        memcpy(&job->dests, dests, sizeof(*dests) * num_dests);
 
-       job->offset = 0;
        job->nr_pages = 0;
        job->pages = NULL;
 
@@ -637,14 +634,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 +673,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 +684,7 @@ bad_workqueue:
 bad_slab:
        kfree(kc);
 
-       return r;
+       return ERR_PTR(r);
 }
 EXPORT_SYMBOL(dm_kcopyd_client_create);