kfree(meta);
 }
 
-static struct zram_meta *zram_meta_alloc(u64 disksize)
+static struct zram_meta *zram_meta_alloc(int device_id, u64 disksize)
 {
        size_t num_pages;
+       char pool_name[8];
        struct zram_meta *meta = kmalloc(sizeof(*meta), GFP_KERNEL);
 
        if (!meta)
                goto out_error;
        }
 
-       meta->mem_pool = zs_create_pool(GFP_NOIO | __GFP_HIGHMEM);
+       snprintf(pool_name, sizeof(pool_name), "zram%d", device_id);
+       meta->mem_pool = zs_create_pool(pool_name, GFP_NOIO | __GFP_HIGHMEM);
        if (!meta->mem_pool) {
                pr_err("Error creating memory pool\n");
                goto out_error;
                return -EINVAL;
 
        disksize = PAGE_ALIGN(disksize);
-       meta = zram_meta_alloc(disksize);
+       meta = zram_meta_alloc(zram->disk->first_minor, disksize);
        if (!meta)
                return -ENOMEM;
 
 
        ZPOOL_MM_DEFAULT = ZPOOL_MM_RW
 };
 
-struct zpool *zpool_create_pool(char *type, gfp_t gfp, struct zpool_ops *ops);
+struct zpool *zpool_create_pool(char *type, char *name,
+                       gfp_t gfp, struct zpool_ops *ops);
 
 char *zpool_get_type(struct zpool *pool);
 
        atomic_t refcount;
        struct list_head list;
 
-       void *(*create)(gfp_t gfp, struct zpool_ops *ops);
+       void *(*create)(char *name, gfp_t gfp, struct zpool_ops *ops);
        void (*destroy)(void *pool);
 
        int (*malloc)(void *pool, size_t size, gfp_t gfp,
 
 
 struct zs_pool;
 
-struct zs_pool *zs_create_pool(gfp_t flags);
+struct zs_pool *zs_create_pool(char *name, gfp_t flags);
 void zs_destroy_pool(struct zs_pool *pool);
 
 unsigned long zs_malloc(struct zs_pool *pool, size_t size);
 
        .evict =        zbud_zpool_evict
 };
 
-static void *zbud_zpool_create(gfp_t gfp, struct zpool_ops *zpool_ops)
+static void *zbud_zpool_create(char *name, gfp_t gfp,
+                       struct zpool_ops *zpool_ops)
 {
        return zbud_create_pool(gfp, zpool_ops ? &zbud_zpool_ops : NULL);
 }
 
 /**
  * zpool_create_pool() - Create a new zpool
  * @type       The type of the zpool to create (e.g. zbud, zsmalloc)
+ * @name       The name of the zpool (e.g. zram0, zswap)
  * @gfp                The GFP flags to use when allocating the pool.
  * @ops                The optional ops callback.
  *
  *
  * Returns: New zpool on success, NULL on failure.
  */
-struct zpool *zpool_create_pool(char *type, gfp_t gfp, struct zpool_ops *ops)
+struct zpool *zpool_create_pool(char *type, char *name, gfp_t gfp,
+               struct zpool_ops *ops)
 {
        struct zpool_driver *driver;
        struct zpool *zpool;
 
        zpool->type = driver->type;
        zpool->driver = driver;
-       zpool->pool = driver->create(gfp, ops);
+       zpool->pool = driver->create(name, gfp, ops);
        zpool->ops = ops;
 
        if (!zpool->pool) {
 
 
 #ifdef CONFIG_ZPOOL
 
-static void *zs_zpool_create(gfp_t gfp, struct zpool_ops *zpool_ops)
+static void *zs_zpool_create(char *name, gfp_t gfp, struct zpool_ops *zpool_ops)
 {
-       return zs_create_pool(gfp);
+       return zs_create_pool(name, gfp);
 }
 
 static void zs_zpool_destroy(void *pool)
  * On success, a pointer to the newly created pool is returned,
  * otherwise NULL.
  */
-struct zs_pool *zs_create_pool(gfp_t flags)
+struct zs_pool *zs_create_pool(char *name, gfp_t flags)
 {
        int i;
        struct zs_pool *pool;
 
 
        pr_info("loading zswap\n");
 
-       zswap_pool = zpool_create_pool(zswap_zpool_type, gfp, &zswap_zpool_ops);
+       zswap_pool = zpool_create_pool(zswap_zpool_type, "zswap", gfp,
+                                       &zswap_zpool_ops);
        if (!zswap_pool && strcmp(zswap_zpool_type, ZSWAP_ZPOOL_DEFAULT)) {
                pr_info("%s zpool not available\n", zswap_zpool_type);
                zswap_zpool_type = ZSWAP_ZPOOL_DEFAULT;
-               zswap_pool = zpool_create_pool(zswap_zpool_type, gfp,
+               zswap_pool = zpool_create_pool(zswap_zpool_type, "zswap", gfp,
                                        &zswap_zpool_ops);
        }
        if (!zswap_pool) {