FROMLIST: scsi: scsi_debug: Support disabling zone write locking

Make it easier to test handling of QUEUE_FLAG_NO_ZONE_WRITE_LOCK by
adding support for setting this flag for scsi_debug request queues.

Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Douglas Gilbert <dgilbert@interlog.com>
Change-Id: I6c8f338dea26c8bfbbca18c70e306f904eccf0cb
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Bug: 234829282
Link: https://lore.kernel.org/linux-block/20230804154821.3232094-1-bvanassche@acm.org/T/#m42e4fdc8dce111f4cdd4dee21f438cd6bf0c9c70
Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
Bart Van Assche
2023-07-27 14:34:15 -07:00
committed by Bart Van Assche
parent 3347f7daae
commit 6c0276ef82

View File

@@ -830,6 +830,7 @@ static int dix_reads;
static int dif_errors;
/* ZBC global data */
static bool sdeb_no_zwrl;
static bool sdeb_zbc_in_use; /* true for host-aware and host-managed disks */
static int sdeb_zbc_zone_cap_mb;
static int sdeb_zbc_zone_size_mb;
@@ -5114,9 +5115,13 @@ static struct sdebug_dev_info *find_build_dev_info(struct scsi_device *sdev)
static int scsi_debug_slave_alloc(struct scsi_device *sdp)
{
struct request_queue *q = sdp->request_queue;
if (sdebug_verbose)
pr_info("slave_alloc <%u %u %u %llu>\n",
sdp->host->host_no, sdp->channel, sdp->id, sdp->lun);
if (sdeb_no_zwrl)
blk_queue_flag_set(QUEUE_FLAG_NO_ZONE_WRITE_LOCK, q);
return 0;
}
@@ -5767,6 +5772,7 @@ module_param_named(medium_error_start, sdebug_medium_error_start, int,
module_param_named(ndelay, sdebug_ndelay, int, S_IRUGO | S_IWUSR);
module_param_named(no_lun_0, sdebug_no_lun_0, int, S_IRUGO | S_IWUSR);
module_param_named(no_uld, sdebug_no_uld, int, S_IRUGO);
module_param_named(no_zone_write_lock, sdeb_no_zwrl, bool, S_IRUGO);
module_param_named(num_parts, sdebug_num_parts, int, S_IRUGO);
module_param_named(num_tgts, sdebug_num_tgts, int, S_IRUGO | S_IWUSR);
module_param_named(opt_blks, sdebug_opt_blks, int, S_IRUGO);
@@ -5840,6 +5846,8 @@ MODULE_PARM_DESC(medium_error_start, "starting sector number to return MEDIUM er
MODULE_PARM_DESC(ndelay, "response delay in nanoseconds (def=0 -> ignore)");
MODULE_PARM_DESC(no_lun_0, "no LU number 0 (def=0 -> have lun 0)");
MODULE_PARM_DESC(no_uld, "stop ULD (e.g. sd driver) attaching (def=0))");
MODULE_PARM_DESC(no_zone_write_lock,
"Disable serialization of zoned writes (def=0)");
MODULE_PARM_DESC(num_parts, "number of partitions(def=0)");
MODULE_PARM_DESC(num_tgts, "number of targets per host to simulate(def=1)");
MODULE_PARM_DESC(opt_blks, "optimal transfer length in blocks (def=1024)");