From d56dd607ba433d9334f0fb4114fe081742ae4361 Mon Sep 17 00:00:00 2001
From: Pawel Baldysiak <pawel.baldysiak@intel.com>
Date: Wed, 11 Feb 2015 22:25:03 +0100
Subject: [PATCH 055/359] Change way of printing name of a process
References: bsc#1081910

Sometimes mdadm prints messages with wrong name "mdmon",
and vice versa.
This patch solves this problem by changing method of determining
process name.
Now "Name" will be set in const at start of a program,
previously was hardcoded as #define.

Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Coly Li <colyli@suse.de>

---
 Grow.c        | 18 +++++++++---------
 Incremental.c |  4 ++--
 Monitor.c     |  4 ++--
 ReadMe.c      |  2 +-
 mdadm.c       |  7 ++++---
 mdadm.h       |  6 +++---
 mdmon.c       |  2 ++
 mdmon.h       |  3 +--
 super-intel.c |  2 +-
 sysfs.c       |  8 ++++----
 xmalloc.c     | 12 ++++++++----
 11 files changed, 37 insertions(+), 31 deletions(-)

Index: mdadm-3.3.1/Grow.c
===================================================================
--- mdadm-3.3.1.orig/Grow.c
+++ mdadm-3.3.1/Grow.c
@@ -1919,7 +1919,7 @@ size_change_error:
 		int err;
 		err = remove_disks_for_takeover(st, sra, array.layout);
 		if (err) {
-			dprintf(Name": Array cannot be reshaped\n");
+			dprintf("%s: Array cannot be reshaped\n", Name);
 			if (cfd > -1)
 				close(cfd);
 			rv = 1;
@@ -2133,7 +2133,7 @@ static int verify_reshape_position(struc
 		char *ep;
 		unsigned long long position = strtoull(buf, &ep, 0);
 
-		dprintf(Name": Read sync_max sysfs entry is: %s\n", buf);
+		dprintf("%s: Read sync_max sysfs entry is: %s\n", Name, buf);
 		if (!(ep == buf || (*ep != 0 && *ep != '\n' && *ep != ' '))) {
 			position *= get_data_disks(level,
 						   info->new_layout,
@@ -3494,8 +3494,8 @@ int reshape_container(char *container, c
 		return 1;
 	default: /* parent */
 		if (!freeze_reshape)
-			printf(Name ": multi-array reshape continues"
-			       " in background\n");
+			printf("%s: multi-array reshape continues"
+			       " in background\n", Name);
 		return 0;
 	case 0: /* child */
 		map_fork();
@@ -3557,8 +3557,8 @@ int reshape_container(char *container, c
 
 		fd = open_dev(mdstat->devnm);
 		if (fd < 0) {
-			printf(Name ": Device %s cannot be opened for reshape.",
-			       adev);
+			printf("%s: Device %s cannot be opened for reshape.",
+			       Name, adev);
 			break;
 		}
 
@@ -3573,8 +3573,8 @@ int reshape_container(char *container, c
 			 * This is possibly interim until the behaviour of
 			 * reshape_array is resolved().
 			 */
-			printf(Name ": Multiple reshape execution detected for "
-			       "device  %s.", adev);
+			printf("%s: Multiple reshape execution detected for "
+			       "device  %s.", Name, adev);
 			close(fd);
 			break;
 		}
@@ -4611,7 +4611,7 @@ int Grow_restart(struct supertype *st, s
 			st->ss->free_super(st);
 			offsets[j] = dinfo.data_offset * 512;
 		}
-		printf(Name ": restoring critical section\n");
+		printf("%s: restoring critical section\n", Name);
 
 		if (restore_stripes(fdlist, offsets,
 				    info->array.raid_disks,
Index: mdadm-3.3.1/Incremental.c
===================================================================
--- mdadm-3.3.1.orig/Incremental.c
+++ mdadm-3.3.1/Incremental.c
@@ -1710,9 +1710,9 @@ int IncrementalRemove(char *devname, cha
 	char buf[32];
 
 	if (!id_path)
-		dprintf(Name ": incremental removal without --path <id_path> "
+		dprintf("%s: incremental removal without --path <id_path> "
 			"lacks the possibility to re-add new device in this "
-			"port\n");
+			"port\n", Name);
 
 	if (strchr(devname, '/')) {
 		pr_err("incremental removal requires a "
Index: mdadm-3.3.1/Monitor.c
===================================================================
--- mdadm-3.3.1.orig/Monitor.c
+++ mdadm-3.3.1/Monitor.c
@@ -381,14 +381,14 @@ static void alert(char *event, char *dev
 			if (info->mailfrom)
 				fprintf(mp, "From: %s\n", info->mailfrom);
 			else
-				fprintf(mp, "From: " Name " monitoring <root>\n");
+				fprintf(mp, "From: %s monitoring <root>\n", Name);
 			fprintf(mp, "To: %s\n", info->mailaddr);
 			fprintf(mp, "Subject: %s event on %s:%s\n\n",
 				event, dev, hname);
 
 			fprintf(mp,
 				"This is an automatically generated"
-				" mail message from " Name "\n");
+				" mail message from %s\n", Name);
 			fprintf(mp, "running on %s\n\n", hname);
 
 			fprintf(mp,
Index: mdadm-3.3.1/ReadMe.c
===================================================================
--- mdadm-3.3.1.orig/ReadMe.c
+++ mdadm-3.3.1/ReadMe.c
@@ -30,7 +30,7 @@
 #ifndef VERS_DATE
 #define VERS_DATE "5th June 2014"
 #endif
-char Version[] = Name " - v" VERSION " - " VERS_DATE "\n";
+char Version[] = "mdadm - v" VERSION " - " VERS_DATE "\n";
 
 /*
  * File: ReadMe.c
Index: mdadm-3.3.1/mdadm.c
===================================================================
--- mdadm-3.3.1.orig/mdadm.c
+++ mdadm-3.3.1/mdadm.c
@@ -38,6 +38,7 @@ static int misc_list(struct mddev_dev *d
 		     struct mddev_ident *ident,
 		     char *dump_directory,
 		     struct supertype *ss, struct context *c);
+const char Name[] = "mdadm";
 
 int main(int argc, char *argv[])
 {
@@ -771,12 +772,12 @@ int main(int argc, char *argv[])
 			if (strcmp(c.update,"?") == 0 ||
 			    strcmp(c.update, "help") == 0) {
 				outf = stdout;
-				fprintf(outf, Name ": ");
+				fprintf(outf, "%s: ", Name);
 			} else {
 				outf = stderr;
 				fprintf(outf,
-					Name ": '--update=%s' is invalid.  ",
-					c.update);
+					"%s: '--update=%s' is invalid.  ",
+					Name, c.update);
 			}
 			fprintf(outf, "Valid --update options are:\n"
 		"     'sparc2.2', 'super-minor', 'uuid', 'name', 'resync',\n"
Index: mdadm-3.3.1/mdadm.h
===================================================================
--- mdadm-3.3.1.orig/mdadm.h
+++ mdadm-3.3.1/mdadm.h
@@ -180,6 +180,8 @@ extern __off64_t lseek64 __P ((int __fd,
 
 #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
 
+extern const char Name[];
+
 /* general information that might be extracted from a superblock */
 struct mdinfo {
 	mdu_array_info_t	array;
@@ -262,8 +264,6 @@ struct createinfo {
 	struct supertype *supertype;
 };
 
-#define Name "mdadm"
-
 enum mode {
 	ASSEMBLE=1,
 	BUILD,
@@ -1457,7 +1457,7 @@ static inline int xasprintf(char **strp,
 	return ret;
 }
 
-#define pr_err(fmt ...) fprintf(stderr, Name ": " fmt)
+#define pr_err(fmt, args...) fprintf(stderr, "%s: "fmt, Name, ##args)
 #define cont_err(fmt ...) fprintf(stderr, "       " fmt)
 
 void *xmalloc(size_t len);
Index: mdadm-3.3.1/mdmon.c
===================================================================
--- mdadm-3.3.1.orig/mdmon.c
+++ mdadm-3.3.1/mdmon.c
@@ -67,6 +67,8 @@
 #include	"mdadm.h"
 #include	"mdmon.h"
 
+char const Name[] = "mdmon";
+
 struct active_array *discard_this;
 struct active_array *pending_discard;
 
Index: mdadm-3.3.1/mdmon.h
===================================================================
--- mdadm-3.3.1.orig/mdmon.h
+++ mdadm-3.3.1/mdmon.h
@@ -18,8 +18,7 @@
  * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#undef pr_err
-#define pr_err(fmt ...) fprintf(stderr, "mdmon: " fmt)
+extern const char Name[];
 
 enum array_state { clear, inactive, suspended, readonly, read_auto,
 		   clean, active, write_pending, active_idle, bad_word};
Index: mdadm-3.3.1/super-intel.c
===================================================================
--- mdadm-3.3.1.orig/super-intel.c
+++ mdadm-3.3.1/super-intel.c
@@ -1386,7 +1386,7 @@ static int imsm_check_attributes(__u32 a
 		}
 
 		if (not_supported)
-			dprintf(Name "(IMSM): Unknown attributes : %x\n", not_supported);
+			dprintf("%s (IMSM): Unknown attributes : %x\n", Name, not_supported);
 
 		ret_val = 0;
 	}
Index: mdadm-3.3.1/sysfs.c
===================================================================
--- mdadm-3.3.1.orig/sysfs.c
+++ mdadm-3.3.1/sysfs.c
@@ -413,8 +413,8 @@ int sysfs_set_str(struct mdinfo *sra, st
 	n = write(fd, val, strlen(val));
 	close(fd);
 	if (n != strlen(val)) {
-		dprintf(Name ": failed to write '%s' to '%s' (%s)\n",
-			val, fname, strerror(errno));
+		dprintf("%s: failed to write '%s' to '%s' (%s)\n",
+			Name, val, fname, strerror(errno));
 		return -1;
 	}
 	return 0;
@@ -450,8 +450,8 @@ int sysfs_uevent(struct mdinfo *sra, cha
 	n = write(fd, event, strlen(event));
 	close(fd);
 	if (n != (int)strlen(event)) {
-		dprintf(Name ": failed to write '%s' to '%s' (%s)\n",
-			event, fname, strerror(errno));
+		dprintf("%s: failed to write '%s' to '%s' (%s)\n",
+			Name, event, fname, strerror(errno));
 		return -1;
 	}
 	return 0;
Index: mdadm-3.3.1/xmalloc.c
===================================================================
--- mdadm-3.3.1.orig/xmalloc.c
+++ mdadm-3.3.1/xmalloc.c
@@ -37,7 +37,8 @@ void *xmalloc(size_t len)
 	char *msg;
 	if (rv)
 		return rv;
-	msg = Name ": memory allocation failure - aborting\n";
+	msg = ": memory allocation failure - aborting\n";
+	write(2, Name, strlen(Name));
 	exit(4+!!write(2, msg, strlen(msg)));
 }
 
@@ -47,7 +48,8 @@ void *xrealloc(void *ptr, size_t len)
 	char *msg;
 	if (rv)
 		return rv;
-	msg = Name ": memory allocation failure - aborting\n";
+	msg =  ": memory allocation failure - aborting\n";
+	write(2, Name, strlen(Name));
 	exit(4+!!write(2, msg, strlen(msg)));
 }
 
@@ -57,7 +59,8 @@ void *xcalloc(size_t num, size_t size)
 	char *msg;
 	if (rv)
 		return rv;
-	msg = Name ": memory allocation failure - aborting\n";
+	msg =  ": memory allocation failure - aborting\n";
+	write(2, Name, strlen(Name));
 	exit(4+!!write(2, msg, strlen(msg)));
 }
 
@@ -67,6 +70,7 @@ char *xstrdup(const char *str)
 	char *msg;
 	if (rv)
 		return rv;
-	msg = Name ": memory allocation failure - aborting\n";
+	msg =  ": memory allocation failure - aborting\n";
+	write(2, Name, strlen(Name));
 	exit(4+!!write(2, msg, strlen(msg)));
 }
