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

Alexander Atanasov alexander.atanasov at virtuozzo.com
Tue Nov 1 14:33:03 MSK 2022


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);
-- 
2.31.1



More information about the Devel mailing list