st: add a debug_flag module parameter request
authorLaurence Oberman <loberman@redhat.com>
Sun, 19 Oct 2014 13:44:25 +0000 (09:44 -0400)
committerChristoph Hellwig <hch@lst.de>
Wed, 12 Nov 2014 10:15:55 +0000 (11:15 +0100)
This patch adds a debug_flag parameter that can be set on module load, and allows the DEBUG facility without a module recompile.
Note that now DEBUG 1 is the default with this patch.

Usage: modprobe st debug_flag=1

Signed-off-by: Laurence Oberman <loberman@redhat.com>
Acked-by: Kai M??kisara <kai.makisara@kolumbus.fi>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Documentation/scsi/st.txt
drivers/scsi/st.c

index f346abbdd6ff3a7aa16acb197e4dbe7b57d469ea..0d5bdb153d3b32582a7a3a6338e7c2e1d789d259 100644 (file)
@@ -506,9 +506,11 @@ user does not request data that far.)
 
 DEBUGGING HINTS
 
-To enable debugging messages, edit st.c and #define DEBUG 1. As seen
-above, debugging can be switched off with an ioctl if debugging is
-compiled into the driver. The debugging output is not voluminous.
+Debugging code is now compiled in by default but debugging is turned off
+with the kernel module parameter debug_flag defaulting to 0.  Debugging
+can still be switched on and off with an ioctl.  To enable debug at
+module load time add debug_flag=1 to the module load options, the
+debugging output is not voluminous.
 
 If the tape seems to hang, I would be very interested to hear where
 the driver is waiting. With the command 'ps -l' you can see the state
index 4daa372ed3811888f950a6c28cff4f68d08208a6..8d5f8b4f9a22dcb476eb615e7b30eb29798124cf 100644 (file)
@@ -56,7 +56,8 @@ static const char *verstr = "20101219";
 
 /* The driver prints some debugging information on the console if DEBUG
    is defined and non-zero. */
-#define DEBUG 0
+#define DEBUG 1
+#define NO_DEBUG 0
 
 #define ST_DEB_MSG  KERN_NOTICE
 #if DEBUG
@@ -80,6 +81,7 @@ static int max_sg_segs;
 static int try_direct_io = TRY_DIRECT_IO;
 static int try_rdio = 1;
 static int try_wdio = 1;
+static int debug_flag;
 
 static struct class st_sysfs_class;
 static const struct attribute_group *st_dev_groups[];
@@ -100,6 +102,9 @@ module_param_named(max_sg_segs, max_sg_segs, int, 0);
 MODULE_PARM_DESC(max_sg_segs, "Maximum number of scatter/gather segments to use (256)");
 module_param_named(try_direct_io, try_direct_io, int, 0);
 MODULE_PARM_DESC(try_direct_io, "Try direct I/O between user buffer and tape drive (1)");
+module_param_named(debug_flag, debug_flag, int, 0);
+MODULE_PARM_DESC(debug_flag, "Enable DEBUG, same as setting debugging=1");
+
 
 /* Extra parameters for testing */
 module_param_named(try_rdio, try_rdio, int, 0);
@@ -124,6 +129,9 @@ static struct st_dev_parm {
        },
        {
                "try_direct_io", &try_direct_io
+       },
+       {
+               "debug_flag", &debug_flag
        }
 };
 #endif
@@ -4309,6 +4317,12 @@ static int __init init_st(void)
        printk(KERN_INFO "st: Version %s, fixed bufsize %d, s/g segs %d\n",
                verstr, st_fixed_buffer_size, st_max_sg_segs);
 
+       debugging = (debug_flag > 0) ? debug_flag : NO_DEBUG;
+       if (debugging) {
+               printk(KERN_INFO "st: Debugging enabled debug_flag = %d\n",
+                       debugging);
+       }
+
        err = class_register(&st_sysfs_class);
        if (err) {
                pr_err("Unable register sysfs class for SCSI tapes\n");