[Devel] [PATCH vz9] ploop: add device name to log messages

Konstantin Khorenko khorenko at virtuozzo.com
Tue Nov 1 18:29:36 MSK 2022


LGTM.

BTW, the dm-qcow2 driver also has some pr_err() calls,
do you plan to enhance them as well?


On 01.11.2022 12:33, Alexander Atanasov wrote:
> ploop uses pr_info/pr_err for logging but it does not
> print which device the message is about.
> 
> Add device name to log messages to make debugging easier.
> 
> Messages are in the following format:
> 
> ploop: dm-47274: log message here
> 
> Where 47274 is the device minor number which corresponds
> to /dev/mapper/ploop47274 which is a symlink to /dev/dm-47274 - the
> printed device name.
> 
> No functional changes, only log messages are reformatted with standard
> prefix including the device name.
> 
> https://jira.sw.ru/browse/PSBM-142993
> Signed-off-by: Alexander Atanasov <alexander.atanasov at virtuozzo.com>
> ---
>   drivers/md/dm-ploop-bat.c    |  4 ++--
>   drivers/md/dm-ploop-cmd.c    | 14 +++++++-------
>   drivers/md/dm-ploop-map.c    | 16 +++++++++-------
>   drivers/md/dm-ploop-target.c |  1 +
>   drivers/md/dm-ploop.h        | 10 ++++++++++
>   5 files changed, 29 insertions(+), 16 deletions(-)
> 
> Cc: Denis V. Lunev <den at virtuozzo.com>
> 
> To address den's comment about device name in the standby patch.
> Which will use the newly created macros that prints the device name.
> 
> diff --git a/drivers/md/dm-ploop-bat.c b/drivers/md/dm-ploop-bat.c
> index 48bf525aa981..cbe48e376097 100644
> --- a/drivers/md/dm-ploop-bat.c
> +++ b/drivers/md/dm-ploop-bat.c
> @@ -215,12 +215,12 @@ int ploop_setup_metadata(struct ploop *ploop, struct page *page)
>   	/* Clusters from start of file to first data block */
>   	offset_clusters = SEC_TO_CLU(ploop, le32_to_cpu(m_hdr->m_FirstBlockOffset));
>   	if (bat_clusters != offset_clusters) {
> -		pr_err("ploop: custom FirstBlockOffset\n");
> +		PL_ERR("custom FirstBlockOffset");
>   		goto out;
>   	}
>   	ret = -EBADSLT;
>   	if (le64_to_cpu(m_hdr->m_SizeInSectors_v2) < ti->len) {
> -		pr_err("ploop: Too short BAT\n");
> +		PL_ERR("Too short BAT");
>   		goto out;
>   	}
>   	kunmap(page);
> diff --git a/drivers/md/dm-ploop-cmd.c b/drivers/md/dm-ploop-cmd.c
> index aa4374d8b94b..88519f590148 100644
> --- a/drivers/md/dm-ploop-cmd.c
> +++ b/drivers/md/dm-ploop-cmd.c
> @@ -311,13 +311,13 @@ static int ploop_grow_relocate_cluster(struct ploop *ploop,
>   	/* Read full clu sync */
>   	ret = ploop_read_cluster_sync(ploop, pio, dst_clu);
>   	if (ret < 0) {
> -		pr_err("ploop: reloc: failed read: %d\n", ret);
> +		PL_ERR("reloc: failed read: %d", ret);
>   		goto out;
>   	}
>   
>   	ret = ploop_prepare_reloc_index_wb(ploop, &md, clu, &new_dst);
>   	if (ret < 0) {
> -		pr_err("ploop: reloc: can't prepare it: %d\n", ret);
> +		PL_ERR("reloc: can't prepare it: %d", ret);
>   		goto out;
>   	}
>   	piwb = md->piwb;
> @@ -325,7 +325,7 @@ static int ploop_grow_relocate_cluster(struct ploop *ploop,
>   	/* Write clu to new destination */
>   	ret = ploop_write_cluster_sync(ploop, pio, new_dst);
>   	if (ret) {
> -		pr_err("ploop: reloc: failed write: %d\n", ret);
> +		PL_ERR("reloc: failed write: %d", ret);
>   		ploop_break_bat_update(ploop, md);
>   		goto out;
>   	}
> @@ -340,7 +340,7 @@ static int ploop_grow_relocate_cluster(struct ploop *ploop,
>   
>   	ret = blk_status_to_errno(bi_status);
>   	if (ret) {
> -		pr_err("ploop: reloc: failed md page write: %d\n", ret);
> +		PL_ERR("reloc: failed md page write: %d", ret);
>   		goto out;
>   	}
>   
> @@ -360,7 +360,7 @@ static int ploop_grow_relocate_cluster(struct ploop *ploop,
>   	/* Zero new BAT entries on disk. */
>   	ret = ploop_write_zero_cluster_sync(ploop, pio, dst_clu);
>   	if (ret)
> -		pr_err("ploop: reloc: failed zero: %d\n", ret);
> +		PL_ERR("reloc: failed zero: %d", ret);
>   out:
>   	return ret;
>   }
> @@ -413,7 +413,7 @@ static int ploop_grow_update_header(struct ploop *ploop,
>   		hdr->m_FirstBlockOffset = offset;
>   		kunmap_atomic(hdr);
>   	} else {
> -		pr_err("ploop: Failed to update hdr: %d\n", ret);
> +		PL_ERR("Failed to update hdr: %d", ret);
>   	}
>   
>   	return ret;
> @@ -1047,7 +1047,7 @@ static int ploop_check_delta_before_flip(struct ploop *ploop, struct file *file)
>   
>   	ret = ploop_read_delta_metadata(ploop, file, &md_root, &nr_be);
>   	if (ret) {
> -		pr_err("Error reading metadata\n");
> +		PL_ERR("Error reading metadata");
>   		goto out;
>   	}
>   
> diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
> index e8288e522e28..bcbe3c644779 100644
> --- a/drivers/md/dm-ploop-map.c
> +++ b/drivers/md/dm-ploop-map.c
> @@ -172,7 +172,8 @@ static bool ploop_try_delay_enospc(struct ploop_rq *prq, struct pio *pio)
>   
>   	ploop_init_prq_and_embedded_pio(ploop, prq->rq, prq, pio);
>   
> -	pr_err_once("ploop: underlying disk is almost full\n");
> +	pr_err_once(PL_FMT("underlying disk is almost full"),
> +		ploop_device_name(ploop));
>   	ploop->event_enospc = true;
>   	list_add_tail(&pio->list, &ploop->enospc_pios);
>   unlock:
> @@ -639,7 +640,8 @@ static void ploop_handle_discard_pio(struct ploop *ploop, struct pio *pio,
>   
>   	if (inflight_h) {
>   		/* @pio will be requeued on inflight_h's pio end */
> -		pr_err_once("ploop: delayed discard: device is used as raw?\n");
> +		pr_err_once(PL_FMT("delayed discard: device is used as raw?"),
> +			ploop_device_name(ploop));
>   		return;
>   	}
>   
> @@ -1012,13 +1014,13 @@ static int ploop_truncate_prealloc_safe(struct ploop *ploop,
>   	else
>   		ret = vfs_fallocate(file, 0, old_len, new_len - old_len);
>   	if (ret) {
> -		pr_err("ploop: %s->prealloc: %d\n", func, ret);
> +		PL_ERR("%s->prealloc: %d", func, ret);
>   		return ret;
>   	}
>   
>   	ret = vfs_fsync(file, 0);
>   	if (ret) {
> -		pr_err("ploop: %s->fsync(): %d\n", func, ret);
> +		PL_ERR("%s->fsync(): %d", func, ret);
>   		return ret;
>   	}
>   
> @@ -1051,7 +1053,7 @@ static int ploop_allocate_cluster(struct ploop *ploop, u32 *dst_clu)
>   		else
>   			ret = ploop_zero_range(file, pos, off - pos);
>   		if (ret) {
> -			pr_err("ploop: punch/zero area: %d\n", ret);
> +			PL_ERR("punch/zero area: %d", ret);
>   			return ret;
>   		}
>   	}
> @@ -1068,7 +1070,7 @@ static int ploop_allocate_cluster(struct ploop *ploop, u32 *dst_clu)
>   		 */
>   		ret = vfs_fsync(file, 0);
>   		if (ret) {
> -			pr_err("ploop: fsync: %d\n", ret);
> +			PL_ERR("fsync: %d", ret);
>   			return ret;
>   		}
>   	}
> @@ -1918,7 +1920,7 @@ int ploop_prepare_reloc_index_wb(struct ploop *ploop,
>   
>   	err = -EIO;
>   	if ((md->status & (MD_DIRTY|MD_WRITEBACK))) {
> -		pr_err("ploop: Unexpected md status: %x\n", md->status);
> +		PL_ERR("Unexpected md status: %x", md->status);
>   		goto out_error;
>   	}
>   	err = ploop_prepare_bat_update(ploop, md, type);
> diff --git a/drivers/md/dm-ploop-target.c b/drivers/md/dm-ploop-target.c
> index 4f7dc36eee0c..673d8b955246 100644
> --- a/drivers/md/dm-ploop-target.c
> +++ b/drivers/md/dm-ploop-target.c
> @@ -21,6 +21,7 @@
>   #include <linux/uio.h>
>   #include <linux/error-injection.h>
>   #include "dm-ploop.h"
> +#include "dm-core.h"
>   
>   #define DM_MSG_PREFIX "ploop"
>   
> diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h
> index 5d953278a976..2228096e7743 100644
> --- a/drivers/md/dm-ploop.h
> +++ b/drivers/md/dm-ploop.h
> @@ -10,6 +10,7 @@
>   
>   #include <linux/device-mapper.h>
>   #include <linux/bio.h>
> +#include "dm-core.h"
>   
>   #define PLOOP_MAP_OFFSET 16
>   typedef u32 map_index_t;
> @@ -541,6 +542,15 @@ static inline void ploop_free_pio(struct ploop *ploop, struct pio *pio)
>   	mempool_free(pio, ploop->pio_pool);
>   }
>   
> +static inline const char *ploop_device_name(struct ploop *ploop)
> +{
> +	return ploop->ti->table->md->disk->disk_name;
> +}
> +
> +#define PL_FMT(fmt) "ploop: %s: " fmt "\n"
> +#define PL_ERR(fmt, ...) pr_err(PL_FMT(fmt), ploop_device_name(ploop), ##__VA_ARGS__)
> +#define PL_INFO(fmt, ...) pr_err(PL_FMT(fmt), ploop_device_name(ploop), ##__VA_ARGS__)
> +
>   extern void ploop_md_page_insert(struct ploop *ploop, struct md_page *md);
>   extern void ploop_free_md_page(struct md_page *md);
>   extern void ploop_free_md_pages_tree(struct rb_root *root);


More information about the Devel mailing list