scsi: scsi_debug: Randomize command completion time
authorDouglas Gilbert <dgilbert@interlog.com>
Tue, 21 Apr 2020 15:14:17 +0000 (11:14 -0400)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 5 May 2020 03:05:21 +0000 (23:05 -0400)
commit0c4bc91d664953780990b0d1d8d1a65f9256474d
tree7f941fb5591f8b7ae4f4767afe7cc2120a2b1c1e
parent6f41f08c88c59ae6e32d32563c9af73ae2d71ece
scsi: scsi_debug: Randomize command completion time

Add a new command line option (e.g. random=1) and sysfs attribute that
causes subsequent command completion times to be between the current
command delay setting and 0. A uniformly distributed 32 bit, kernel
provided integer is used for this purpose.

Since the existing 'delay' whose units are jiffies (typically milliseconds)
and 'ndelay' (units: nanoseconds) options (and sysfs attributes) span a
range greater than 32 bits, some scaling is required.

The purpose of this patch is to widen the range of testing cases that are
visited in long running tests. Put simply: rarely struct race conditions
are more likely to be found when this facility is used.

The default is the previous case in which all command completions were
roughly equal to (if not, slightly longer) than the value given by the
'delay' or 'ndelay' settings (or their defaults).  This option's default is
equivalent to setting 'random=0' .

[mkp: use kstrtobool()]

Link: https://lore.kernel.org/r/20200421151424.32668-2-dgilbert@interlog.com
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_debug.c