On 2020/04/07 2:28, Hannes Reinecke wrote: > Introduce dmz_metadata_label() to format the device-mapper device > name and use it instead of the device name of the underlying device. > > Signed-off-by: Hannes Reinecke <hare@xxxxxxx> Reviewed-by: Damien Le Moal <damien.lemoal@xxxxxxx> > --- > drivers/md/dm-zoned-metadata.c | 11 ++++++++++- > drivers/md/dm-zoned-reclaim.c | 15 ++++++++------- > drivers/md/dm-zoned-target.c | 17 ++++++++++------- > drivers/md/dm-zoned.h | 4 +++- > 4 files changed, 31 insertions(+), 16 deletions(-) > > diff --git a/drivers/md/dm-zoned-metadata.c b/drivers/md/dm-zoned-metadata.c > index ae261bf6452c..f7ae57e78230 100644 > --- a/drivers/md/dm-zoned-metadata.c > +++ b/drivers/md/dm-zoned-metadata.c > @@ -134,6 +134,8 @@ struct dmz_sb { > struct dmz_metadata { > struct dmz_dev *dev; > > + char devname[BDEVNAME_SIZE]; > + > sector_t zone_bitmap_size; > unsigned int zone_nr_bitmap_blocks; > unsigned int zone_bits_per_mblk; > @@ -265,6 +267,11 @@ unsigned int dmz_nr_unmap_seq_zones(struct dmz_metadata *zmd) > return atomic_read(&zmd->unmap_nr_seq); > } > > +const char *dmz_metadata_label(struct dmz_metadata *zmd) > +{ > + return (const char *)zmd->devname; > +} > + > /* > * Lock/unlock mapping table. > * The map lock also protects all the zone lists. > @@ -2445,7 +2452,8 @@ static void dmz_cleanup_metadata(struct dmz_metadata *zmd) > /* > * Initialize the zoned metadata. > */ > -int dmz_ctr_metadata(struct dmz_dev *dev, struct dmz_metadata **metadata) > +int dmz_ctr_metadata(struct dmz_dev *dev, struct dmz_metadata **metadata, > + const char *devname) > { > struct dmz_metadata *zmd; > unsigned int i, zid; > @@ -2456,6 +2464,7 @@ int dmz_ctr_metadata(struct dmz_dev *dev, struct dmz_metadata **metadata) > if (!zmd) > return -ENOMEM; > > + strcpy(zmd->devname, devname); > zmd->dev = dev; > zmd->mblk_rbtree = RB_ROOT; > init_rwsem(&zmd->mblk_sem); > diff --git a/drivers/md/dm-zoned-reclaim.c b/drivers/md/dm-zoned-reclaim.c > index 95d2c8870480..c46159b6fc46 100644 > --- a/drivers/md/dm-zoned-reclaim.c > +++ b/drivers/md/dm-zoned-reclaim.c > @@ -481,15 +481,16 @@ static void dmz_reclaim_work(struct work_struct *work) > 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; > } > @@ -525,7 +526,7 @@ int dmz_ctr_reclaim(struct dmz_dev *dev, struct dmz_metadata *zmd, > /* 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; > diff --git a/drivers/md/dm-zoned-target.c b/drivers/md/dm-zoned-target.c > index f4e3be7f9474..c2c3aa090f97 100644 > --- a/drivers/md/dm-zoned-target.c > +++ b/drivers/md/dm-zoned-target.c > @@ -782,7 +782,8 @@ static int dmz_ctr(struct dm_target *ti, unsigned int argc, char **argv) > > /* 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; > @@ -811,8 +812,9 @@ static int dmz_ctr(struct dm_target *ti, unsigned int argc, char **argv) > /* 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; > @@ -824,7 +826,7 @@ static int dmz_ctr(struct dm_target *ti, unsigned int argc, char **argv) > 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; > @@ -839,9 +841,10 @@ static int dmz_ctr(struct dm_target *ti, unsigned int argc, char **argv) > 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: > diff --git a/drivers/md/dm-zoned.h b/drivers/md/dm-zoned.h > index c1b7b9a729c2..f7df7f67e404 100644 > --- a/drivers/md/dm-zoned.h > +++ b/drivers/md/dm-zoned.h > @@ -163,7 +163,8 @@ struct dmz_reclaim; > /* > * Functions defined in dm-zoned-metadata.c > */ > -int dmz_ctr_metadata(struct dmz_dev *dev, struct dmz_metadata **zmd); > +int dmz_ctr_metadata(struct dmz_dev *dev, struct dmz_metadata **zmd, > + const char *devname); > void dmz_dtr_metadata(struct dmz_metadata *zmd); > int dmz_resume_metadata(struct dmz_metadata *zmd); > > @@ -174,6 +175,7 @@ void dmz_unlock_metadata(struct dmz_metadata *zmd); > void dmz_lock_flush(struct dmz_metadata *zmd); > void dmz_unlock_flush(struct dmz_metadata *zmd); > int dmz_flush_metadata(struct dmz_metadata *zmd); > +const char *dmz_metadata_label(struct dmz_metadata *zmd); > > unsigned int dmz_id(struct dmz_metadata *zmd, struct dm_zone *zone); > sector_t dmz_start_sect(struct dmz_metadata *zmd, struct dm_zone *zone); > -- Damien Le Moal Western Digital Research -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel