These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / lustre / lustre / llite / lloop.c
index 413a840..fed50d5 100644 (file)
@@ -162,7 +162,7 @@ static int max_loop = MAX_LOOP_DEFAULT;
 static struct lloop_device *loop_dev;
 static struct gendisk **disks;
 static struct mutex lloop_mutex;
-static void *ll_iocontrol_magic = NULL;
+static void *ll_iocontrol_magic;
 
 static loff_t get_loop_size(struct lloop_device *lo, struct file *file)
 {
@@ -315,7 +315,6 @@ static unsigned int loop_get_bio(struct lloop_device *lo, struct bio **req)
                if (page_count + (*bio)->bi_vcnt > LLOOP_MAX_SEGMENTS)
                        break;
 
-
                page_count += (*bio)->bi_vcnt;
                count++;
                bio = &(*bio)->bi_next;
@@ -334,12 +333,14 @@ static unsigned int loop_get_bio(struct lloop_device *lo, struct bio **req)
        return count;
 }
 
-static void loop_make_request(struct request_queue *q, struct bio *old_bio)
+static blk_qc_t loop_make_request(struct request_queue *q, struct bio *old_bio)
 {
        struct lloop_device *lo = q->queuedata;
        int rw = bio_rw(old_bio);
        int inactive;
 
+       blk_queue_split(q, &old_bio, q->bio_split);
+
        if (!lo)
                goto err;
 
@@ -363,20 +364,23 @@ static void loop_make_request(struct request_queue *q, struct bio *old_bio)
                goto err;
        }
        loop_add_bio(lo, old_bio);
-       return;
+       return BLK_QC_T_NONE;
 err:
-       cfs_bio_io_error(old_bio, old_bio->bi_iter.bi_size);
+       bio_io_error(old_bio);
+       return BLK_QC_T_NONE;
 }
 
-
 static inline void loop_handle_bio(struct lloop_device *lo, struct bio *bio)
 {
        int ret;
+
        ret = do_bio_lustrebacked(lo, bio);
        while (bio) {
                struct bio *tmp = bio->bi_next;
+
                bio->bi_next = NULL;
-               cfs_bio_endio(bio, bio->bi_iter.bi_size, ret);
+               bio->bi_error = ret;
+               bio_endio(bio);
                bio = tmp;
        }
 }
@@ -427,6 +431,7 @@ static int loop_thread(void *data)
                wait_event(lo->lo_bh_wait, loop_active(lo));
                if (!atomic_read(&lo->lo_pending)) {
                        int exiting = 0;
+
                        spin_lock_irq(&lo->lo_lock);
                        exiting = (lo->lo_state == LLOOP_RUNDOWN);
                        spin_unlock_irq(&lo->lo_lock);
@@ -840,9 +845,9 @@ out_mem4:
 out_mem3:
        while (i--)
                put_disk(disks[i]);
-       OBD_FREE(disks, max_loop * sizeof(*disks));
+       kfree(disks);
 out_mem2:
-       OBD_FREE(loop_dev, max_loop * sizeof(*loop_dev));
+       kfree(loop_dev);
 out_mem1:
        unregister_blkdev(lloop_major, "lloop");
        ll_iocontrol_unregister(ll_iocontrol_magic);
@@ -863,8 +868,8 @@ static void lloop_exit(void)
 
        unregister_blkdev(lloop_major, "lloop");
 
-       OBD_FREE(disks, max_loop * sizeof(*disks));
-       OBD_FREE(loop_dev, max_loop * sizeof(*loop_dev));
+       kfree(disks);
+       kfree(loop_dev);
 }
 
 module_init(lloop_init);