Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9b43a10 authored by Seymour, Shane M's avatar Seymour, Shane M Committed by James Bottomley
Browse files

st: allow debug output to be enabled or disabled via sysfs



Change st driver to allow enabling or disabling debug output
via sysfs file /sys/bus/scsi/drivers/st/debug_flag.

Previously the only way to enable debug output was:

1. loading the driver with the module parameter debug_flag=1
2. an ioctl call (this method was also the only way to dynamically
disable debug output).

To use the ioctl you need a second tape drive (if you are
actively testing the first tape drive) since a second process
cannot open the first tape drive if it is in use.

The this change is only functional if the value of the macro
DEBUG in st.c is a non-zero value (which it is by default).

Signed-off-by: default avatarShane Seymour <shane.seymour@hpe.com>
Reviewed-by: default avatarLaurence Oberman <oberman.l@gmail.com>
Acked-by: default avatarKai Mäkisara <kai.makisara@kolumbus.fi>
Signed-off-by: default avatarJames Bottomley <JBottomley@Odin.com>
parent c59ab4e5
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
What:		/sys/bus/scsi/drivers/st/debug_flag
Date:		October 2015
Kernel Version:	?.?
Contact:	shane.seymour@hpe.com
Description:
		This file allows you to turn debug output from the st driver
		off if you write a '0' to the file or on if you write a '1'.
		Note that debug output requires that the module be compiled
		with the #define DEBUG set to a non-zero value (this is the
		default). If DEBUG is set to 0 then this file will not
		appear in sysfs as its presence is conditional upon debug
		output support being compiled into the module.
+3 −1
Original line number Diff line number Diff line
@@ -569,7 +569,9 @@ 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.
debugging output is not voluminous. Debugging can also be enabled
and disabled by writing a '0' (disable) or '1' (enable) to the sysfs
file /sys/bus/scsi/drivers/st/debug_flag.

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
+30 −0
Original line number Diff line number Diff line
@@ -4452,11 +4452,41 @@ static ssize_t version_show(struct device_driver *ddd, char *buf)
}
static DRIVER_ATTR_RO(version);

#if DEBUG
static ssize_t debug_flag_store(struct device_driver *ddp,
	const char *buf, size_t count)
{
/* We only care what the first byte of the data is the rest is unused.
 * if it's a '1' we turn on debug and if it's a '0' we disable it. All
 * other values have -EINVAL returned if they are passed in.
 */
	if (count > 0) {
		if (buf[0] == '0') {
			debugging = NO_DEBUG;
			return count;
		} else if (buf[0] == '1') {
			debugging = 1;
			return count;
		}
	}
	return -EINVAL;
}

static ssize_t debug_flag_show(struct device_driver *ddp, char *buf)
{
	return scnprintf(buf, PAGE_SIZE, "%d\n", debugging);
}
static DRIVER_ATTR_RW(debug_flag);
#endif

static struct attribute *st_drv_attrs[] = {
	&driver_attr_try_direct_io.attr,
	&driver_attr_fixed_buffer_size.attr,
	&driver_attr_max_sg_segs.attr,
	&driver_attr_version.attr,
#if DEBUG
	&driver_attr_debug_flag.attr,
#endif
	NULL,
};
ATTRIBUTE_GROUPS(st_drv);