zrc->kc_throttle.throttle = min(75U, 100U - p_unmap_rnd / 2);
        }
 
-       dmz_dev_debug(zrc->dev,
-                     "Reclaim (%u): %s, %u%% free rnd zones (%u/%u)",
-                     zrc->kc_throttle.throttle,
-                     (dmz_target_idle(zrc) ? "Idle" : "Busy"),
-                     p_unmap_rnd, nr_unmap_rnd, nr_rnd);
+       DMDEBUG("(%s): Reclaim (%u): %s, %u%% free rnd zones (%u/%u)",
+               dmz_metadata_label(zmd),
+               zrc->kc_throttle.throttle,
+               (dmz_target_idle(zrc) ? "Idle" : "Busy"),
+               p_unmap_rnd, nr_unmap_rnd, nr_rnd);
 
        ret = dmz_do_reclaim(zrc);
        if (ret) {
-               dmz_dev_debug(zrc->dev, "Reclaim error %d\n", ret);
+               DMDEBUG("(%s): Reclaim error %d\n",
+                       dmz_metadata_label(zmd), ret);
                if (!dmz_check_bdev(zrc->dev))
                        return;
        }
        /* Reclaim work */
        INIT_DELAYED_WORK(&zrc->work, dmz_reclaim_work);
        zrc->wq = alloc_ordered_workqueue("dmz_rwq_%s", WQ_MEM_RECLAIM,
-                                         dev->name);
+                                         dmz_metadata_label(zmd));
        if (!zrc->wq) {
                ret = -ENOMEM;
                goto err;
 
                return 0;
        }
 
-       dmz_dev_debug(dmz->dev, "READ chunk %llu -> %s zone %u, block %llu, %u blocks",
-                     (unsigned long long)dmz_bio_chunk(zmd, bio),
-                     (dmz_is_rnd(zone) ? "RND" : "SEQ"),
-                     zone->id,
-                     (unsigned long long)chunk_block, nr_blocks);
+       DMDEBUG("(%s): READ chunk %llu -> %s zone %u, block %llu, %u blocks",
+               dmz_metadata_label(zmd),
+               (unsigned long long)dmz_bio_chunk(zmd, bio),
+               (dmz_is_rnd(zone) ? "RND" : "SEQ"),
+               zone->id,
+               (unsigned long long)chunk_block, nr_blocks);
 
        /* Check block validity to determine the read location */
        bzone = zone->bzone;
        if (!zone)
                return -ENOSPC;
 
-       dmz_dev_debug(dmz->dev, "WRITE chunk %llu -> %s zone %u, block %llu, %u blocks",
-                     (unsigned long long)dmz_bio_chunk(zmd, bio),
-                     (dmz_is_rnd(zone) ? "RND" : "SEQ"),
-                     zone->id,
-                     (unsigned long long)chunk_block, nr_blocks);
+       DMDEBUG("(%s): WRITE chunk %llu -> %s zone %u, block %llu, %u blocks",
+               dmz_metadata_label(zmd),
+               (unsigned long long)dmz_bio_chunk(zmd, bio),
+               (dmz_is_rnd(zone) ? "RND" : "SEQ"),
+               zone->id,
+               (unsigned long long)chunk_block, nr_blocks);
 
        if (dmz_is_rnd(zone) || chunk_block == zone->wp_block) {
                /*
        if (dmz_is_readonly(zone))
                return -EROFS;
 
-       dmz_dev_debug(dmz->dev, "DISCARD chunk %llu -> zone %u, block %llu, %u blocks",
-                     (unsigned long long)dmz_bio_chunk(zmd, bio),
-                     zone->id,
-                     (unsigned long long)chunk_block, nr_blocks);
+       DMDEBUG("(%s): DISCARD chunk %llu -> zone %u, block %llu, %u blocks",
+               dmz_metadata_label(dmz->metadata),
+               (unsigned long long)dmz_bio_chunk(zmd, bio),
+               zone->id,
+               (unsigned long long)chunk_block, nr_blocks);
 
        /*
         * Invalidate blocks in the data zone and its
                ret = dmz_handle_discard(dmz, zone, bio);
                break;
        default:
-               dmz_dev_err(dmz->dev, "Unsupported BIO operation 0x%x",
-                           bio_op(bio));
+               DMERR("(%s): Unsupported BIO operation 0x%x",
+                     dmz_metadata_label(dmz->metadata), bio_op(bio));
                ret = -EIO;
        }
 
        /* Flush dirty metadata blocks */
        ret = dmz_flush_metadata(dmz->metadata);
        if (ret)
-               dmz_dev_debug(dmz->dev, "Metadata flush failed, rc=%d\n", ret);
+               DMDEBUG("(%s): Metadata flush failed, rc=%d\n",
+                       dmz_metadata_label(dmz->metadata), ret);
 
        /* Process queued flush requests */
        while (1) {
        if (dmz_bdev_is_dying(dmz->dev))
                return DM_MAPIO_KILL;
 
-       dmz_dev_debug(dev, "BIO op %d sector %llu + %u => chunk %llu, block %llu, %u blocks",
-                     bio_op(bio), (unsigned long long)sector, nr_sectors,
-                     (unsigned long long)dmz_bio_chunk(zmd, bio),
-                     (unsigned long long)dmz_chunk_block(zmd, dmz_bio_block(bio)),
-                     (unsigned int)dmz_bio_blocks(bio));
+       DMDEBUG("(%s): BIO op %d sector %llu + %u => chunk %llu, block %llu, %u blocks",
+               dmz_metadata_label(zmd),
+               bio_op(bio), (unsigned long long)sector, nr_sectors,
+               (unsigned long long)dmz_bio_chunk(zmd, bio),
+               (unsigned long long)dmz_chunk_block(zmd, dmz_bio_block(bio)),
+               (unsigned int)dmz_bio_blocks(bio));
 
        bio_set_dev(bio, dev->bdev);
 
        /* Now ready to handle this BIO */
        ret = dmz_queue_chunk_work(dmz, bio);
        if (ret) {
-               dmz_dev_debug(dmz->dev,
-                             "BIO op %d, can't process chunk %llu, err %i\n",
-                             bio_op(bio), (u64)dmz_bio_chunk(zmd, bio),
-                             ret);
+               DMDEBUG("(%s): BIO op %d, can't process chunk %llu, err %i\n",
+                       dmz_metadata_label(zmd),
+                       bio_op(bio), (u64)dmz_bio_chunk(zmd, bio),
+                       ret);
                return DM_MAPIO_REQUEUE;
        }
 
 
        /* Initialize metadata */
        dev = dmz->dev;
-       ret = dmz_ctr_metadata(dev, &dmz->metadata);
+       ret = dmz_ctr_metadata(dev, &dmz->metadata,
+                              dm_table_device_name(ti->table));
        if (ret) {
                ti->error = "Metadata initialization failed";
                goto err_dev;
        /* Chunk BIO work */
        mutex_init(&dmz->chunk_lock);
        INIT_RADIX_TREE(&dmz->chunk_rxtree, GFP_NOIO);
-       dmz->chunk_wq = alloc_workqueue("dmz_cwq_%s", WQ_MEM_RECLAIM | WQ_UNBOUND,
-                                       0, dev->name);
+       dmz->chunk_wq = alloc_workqueue("dmz_cwq_%s",
+                                       WQ_MEM_RECLAIM | WQ_UNBOUND, 0,
+                                       dmz_metadata_label(dmz->metadata));
        if (!dmz->chunk_wq) {
                ti->error = "Create chunk workqueue failed";
                ret = -ENOMEM;
        bio_list_init(&dmz->flush_list);
        INIT_DELAYED_WORK(&dmz->flush_work, dmz_flush_work);
        dmz->flush_wq = alloc_ordered_workqueue("dmz_fwq_%s", WQ_MEM_RECLAIM,
-                                               dev->name);
+                                               dmz_metadata_label(dmz->metadata));
        if (!dmz->flush_wq) {
                ti->error = "Create flush workqueue failed";
                ret = -ENOMEM;
                goto err_fwq;
        }
 
-       dmz_dev_info(dev, "Target device: %llu 512-byte logical sectors (%llu blocks)",
-                    (unsigned long long)ti->len,
-                    (unsigned long long)dmz_sect2blk(ti->len));
+       DMINFO("(%s): Target device: %llu 512-byte logical sectors (%llu blocks)",
+              dmz_metadata_label(dmz->metadata),
+              (unsigned long long)ti->len,
+              (unsigned long long)dmz_sect2blk(ti->len));
 
        return 0;
 err_fwq: