Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

scsi: scsi_debug: Support injecting unaligned write errors

Allow user space software, e.g. a blktests test, to inject unaligned
write errors.

Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20251113174151.1095574-1-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Bart Van Assche and committed by
Martin K. Petersen
13b77ed9 78b1a242

+11 -1
+11 -1
drivers/scsi/scsi_debug.c
··· 230 230 #define SDEBUG_OPT_NO_CDB_NOISE 0x4000 231 231 #define SDEBUG_OPT_HOST_BUSY 0x8000 232 232 #define SDEBUG_OPT_CMD_ABORT 0x10000 233 + #define SDEBUG_OPT_UNALIGNED_WRITE 0x20000 233 234 #define SDEBUG_OPT_ALL_NOISE (SDEBUG_OPT_NOISE | SDEBUG_OPT_Q_NOISE | \ 234 235 SDEBUG_OPT_RESET_NOISE) 235 236 #define SDEBUG_OPT_ALL_INJECTING (SDEBUG_OPT_RECOVERED_ERR | \ ··· 238 237 SDEBUG_OPT_DIF_ERR | SDEBUG_OPT_DIX_ERR | \ 239 238 SDEBUG_OPT_SHORT_TRANSFER | \ 240 239 SDEBUG_OPT_HOST_BUSY | \ 241 - SDEBUG_OPT_CMD_ABORT) 240 + SDEBUG_OPT_CMD_ABORT | \ 241 + SDEBUG_OPT_UNALIGNED_WRITE) 242 242 #define SDEBUG_OPT_RECOV_DIF_DIX (SDEBUG_OPT_RECOVERED_ERR | \ 243 243 SDEBUG_OPT_DIF_ERR | SDEBUG_OPT_DIX_ERR) 244 244 ··· 4933 4931 struct sdeb_store_info *sip = devip2sip(devip, true); 4934 4932 u8 *cmd = scp->cmnd; 4935 4933 bool meta_data_locked = false; 4934 + 4935 + if (unlikely(sdebug_opts & SDEBUG_OPT_UNALIGNED_WRITE && 4936 + atomic_read(&sdeb_inject_pending))) { 4937 + atomic_set(&sdeb_inject_pending, 0); 4938 + mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 4939 + UNALIGNED_WRITE_ASCQ); 4940 + return check_condition_result; 4941 + } 4936 4942 4937 4943 switch (cmd[0]) { 4938 4944 case WRITE_16: