Re: [PATCH 2/2 v3] be2iscsi: Fix some error messages
From: Joe Perches
Date: Sat Aug 13 2016 - 13:03:30 EST
On Sat, 2016-08-13 at 09:41 -0700, Joe Perches wrote:
> On Sat, 2016-08-13 at 14:31 +0200, Christophe JAILLET wrote:
> > Le 13/08/2016 à 13:35, Joe Perches a écrit :
> > > > @@ -268,7 +268,7 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc)
> > > > &nonemb_cmd.dma);
> > > > if (nonemb_cmd.va == NULL) {
> > > > beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_EH,
> > > > - "BM_%d : Failed to allocate memory for"
> > > > + "BM_%d : Failed to allocate memory for "
> > > > "mgmt_invalidate_icds\n");
This is the first time I've looked at the beiscsi_log macro.
It sure is odd and undesirable.
It's _very_ not nice to have a format string take an implied
__LINE__ argument.
It'd be much more intelligible to take the first bit as a
separate string, concatenate it in the macro with "_%d: "
and __LINE__ (if that's really useful, I think it's not)
and emit that as the format.
Something like:
diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/be_main.h
index 30a4606..3f0fbbf 100644
--- a/drivers/scsi/be2iscsi/be_main.h
+++ b/drivers/scsi/be2iscsi/be_main.h
@@ -1084,11 +1084,12 @@ struct hwi_context_memory {
#define __beiscsi_log(phba, level, fmt, arg...) \
shost_printk(level, phba->shost, fmt, __LINE__, ##arg)
-#define beiscsi_log(phba, level, mask, fmt, arg...) \
-do { \
- uint32_t log_value = phba->attr_log_enable; \
- if (((mask) & log_value) || (level[1] <= '3')) \
- __beiscsi_log(phba, level, fmt, ##arg); \
-} while (0);
+#define beiscsi_log(phba, level, mask, prefix, fmt, ...) \
+do { \
+ uint32_t log_value = phba->attr_log_enable; \
+ if (((mask) & log_value) || (level[1] <= '3')) \
+ __beiscsi_log(phba, level, prefix "_%d: " fmt, \
+ ##__VA_ARGS__); \
+} while (0)
#endif
So these beiscsi_log uses become something like:
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_EH,
"BM", "Failed to allocate memory for mgmt_invalidate_icds\n");
and the format and its arguments match.