Adjustments for 4.18 kernel master
authorReto Buerki <reet@codelabs.ch>
Thu, 6 Dec 2018 14:26:58 +0000 (15:26 +0100)
committerReto Buerki <reet@codelabs.ch>
Mon, 28 Jan 2019 14:58:48 +0000 (15:58 +0100)
client.c
common.c
common.h
server.c

index 69e95a4..a1fa442 100644 (file)
--- a/client.c
+++ b/client.c
@@ -649,7 +649,7 @@ static int muenblk_client_init_queue(struct muenblk_device *dev)
        blk_queue_make_request(dev->queue, muenblk_client_make_request);
 
        blk_queue_write_cache(dev->queue, true, false);
-       queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, dev->queue);
+       blk_queue_flag_clear(QUEUE_FLAG_DISCARD, dev->queue);
 
        TRACE("Successfully initialized queue\n");
 
@@ -728,10 +728,7 @@ static int muenblk_client_init_blkdev(struct muenblk_device *dev)
        set_capacity(dev->disk, dev->disk_sector_count);
 
        add_disk(dev->disk);
-
        dev->mode = 0;
-       dev->bio_set = NULL;
-       dev->page_pool = NULL;
 
        if (error) {
                ERROR("Failed to initialize block device\n");
index 11070b5..5e4b7a2 100644 (file)
--- a/common.c
+++ b/common.c
@@ -7,6 +7,7 @@
  *
  */
 
+#undef KBUILD_MODNAME
 #define KBUILD_MODNAME "muenblock_common"
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
index 1184a2a..01f01e3 100644 (file)
--- a/common.h
+++ b/common.h
@@ -96,9 +96,9 @@ struct muenblk_device {
        struct request_queue            *queue;
        fmode_t                         mode;
 
-       struct bio_set                  *bio_set;
-       mempool_t                       *page_pool;
-       mempool_t                       *metadata_pool;
+       struct bio_set                  bio_set;
+       mempool_t                       page_pool;
+       mempool_t                       metadata_pool;
 };
 
 struct muenblk_priv_data {
index bbb6e95..d7e68c0 100644 (file)
--- a/server.c
+++ b/server.c
@@ -51,7 +51,7 @@ static void cleanup_bio(struct bio *bio)
                metadata = bio->bi_private;
 
                if (metadata)
-                       mempool_free(metadata, metadata->dev->metadata_pool);
+                       mempool_free(metadata, &metadata->dev->metadata_pool);
 
                bio->bi_private = NULL;
                bio_put(bio);
@@ -127,7 +127,7 @@ static int muenblk_server_create_bio_mem(struct muenblk_device *dev,
        }
 
        if (likely(!*bio_ptr)) {
-               *bio_ptr = bio_alloc_bioset(GFP_ATOMIC, 1, dev->bio_set);
+               *bio_ptr = bio_alloc_bioset(GFP_ATOMIC, 1, &dev->bio_set);
 
                if (unlikely(!*bio_ptr)) {
                        ERROR("Failed to allocate bio from bioset\n");
@@ -135,7 +135,7 @@ static int muenblk_server_create_bio_mem(struct muenblk_device *dev,
                        goto exit;
                }
 
-               metadata = mempool_alloc(dev->metadata_pool, GFP_KERNEL);
+               metadata = mempool_alloc(&dev->metadata_pool, GFP_KERNEL);
                if (unlikely(!metadata)) {
                        ERROR("Failed to allocate metadata from mempool\n");
                        error = -ENOMEM;
@@ -162,7 +162,7 @@ static int muenblk_server_create_bio_page(struct muenblk_device *dev,
        int size = 0;
        int error = 0;
 
-       page = mempool_alloc(dev->page_pool, GFP_NOIO);
+       page = mempool_alloc(&dev->page_pool, GFP_NOIO);
 
        if (unlikely(!page)) {
                ERROR("Failed to allocate bio page from mempool\n");
@@ -185,7 +185,7 @@ static int muenblk_server_create_bio_page(struct muenblk_device *dev,
        return 0;
 
 error_cleanup_page:
-       mempool_free(page, dev->page_pool);
+       mempool_free(page, &dev->page_pool);
 
 exit:
        return error;
@@ -326,7 +326,7 @@ static int muenblk_server_read_resp(struct muenblk_device *dev,
 //                     16, 1, mapped_page, EVENT_BLOCK_SIZE, true);
 
                kunmap_atomic(mapped_page);
-               mempool_free(bvec->bv_page, dev->page_pool);
+               mempool_free(bvec->bv_page, &dev->page_pool);
                bvec->bv_page = NULL;
        }
 
@@ -351,7 +351,7 @@ static int muenblk_server_write_resp(struct muenblk_device *dev,
                                dev->bdev->bd_part->start_sect) >> 3) - 1;
 
        bio_for_each_segment_all(bvec, bio, i) {
-               mempool_free(bvec->bv_page, dev->page_pool);
+               mempool_free(bvec->bv_page, &dev->page_pool);
                bvec->bv_page = NULL;
        }
 
@@ -536,7 +536,7 @@ static int muenblk_server_init_block_device(struct muenblk_device *dev)
        dev->disk = bdev->bd_disk;
        dev->mode = mode;
 
-       get_disk(bdev->bd_disk);
+       get_disk_and_module(bdev->bd_disk);
 
        dev->disk_sector_count = bdev->bd_part->nr_sects;
        dev->disk_size = dev->disk_sector_count * KERNEL_SECTOR_SIZE;
@@ -561,27 +561,24 @@ static int muenblk_server_init_mem(struct muenblk_device *dev)
        //XXX: Why +2?
        num = dev->req.channel_queue_size + dev->resp.channel_queue_size + 2;
 
-       dev->bio_set = bioset_create(num, 0, BIOSET_NEED_BVECS);
-       if (!dev->bio_set) {
+       bioset_init(&dev->bio_set, num, 0, BIOSET_NEED_BVECS);
+       if (!bioset_initialized(&dev->bio_set)) {
                ERROR("Failed to create bioset\n");
-
                error = -ENOMEM;
                goto exit;
        }
 
-       dev->page_pool = mempool_create_page_pool(num, 0);
-       if (!dev->page_pool) {
+       error = mempool_init_page_pool(&dev->page_pool, 1, 0);
+       if (error) {
                ERROR("Failed to create physical page pool\n");
-
                error = -ENOMEM;
                goto err_cleanup_bioset;
        }
 
-       dev->metadata_pool = mempool_create_kmalloc_pool(num,
+       error = mempool_init_kmalloc_pool(&dev->metadata_pool, num,
                sizeof(struct muenblk_priv_data));
-       if (!dev->metadata_pool) {
+       if (error) {
                ERROR("Failed to create metadata pool\n");
-
                error = -ENOMEM;
                goto err_cleanup_pagepool;
        }
@@ -591,12 +588,10 @@ static int muenblk_server_init_mem(struct muenblk_device *dev)
        return 0;
 
 err_cleanup_pagepool:
-       mempool_destroy(dev->page_pool);
-       dev->page_pool = NULL;
+       mempool_exit(&dev->page_pool);
 
 err_cleanup_bioset:
-       bioset_free(dev->bio_set);
-       dev->bio_set = NULL;
+       bioset_exit(&dev->bio_set);
 
 exit:
        return error;
@@ -604,16 +599,11 @@ exit:
 
 static void muenblk_server_cleanup_mem(struct muenblk_device *dev)
 {
-       if (dev->bio_set) {
-               bioset_free(dev->bio_set);
-               dev->bio_set = NULL;
-       }
-
-       mempool_destroy(dev->page_pool);
-       dev->page_pool = NULL;
+       if (bioset_initialized(&dev->bio_set))
+               bioset_exit(&dev->bio_set);
 
-       mempool_destroy(dev->metadata_pool);
-       dev->metadata_pool = NULL;
+       mempool_exit(&dev->page_pool);
+       mempool_exit(&dev->metadata_pool);
 
        TRACE("Server memory cleanup successful\n");
 }