X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Fsg.c;fp=engines%2Fsg.c;h=0c525fae8fd800877888a341e14df0c4d64bab72;hp=1c0193840df3cacbf276be48542f5cd5af7b80ad;hb=e8ab121c88d61624c0925b54013cd57c2dc171f2;hpb=b182f07738d39f7969c3376375131dd2d3d7016a diff --git a/engines/sg.c b/engines/sg.c index 1c019384..0c525fae 100644 --- a/engines/sg.c +++ b/engines/sg.c @@ -66,8 +66,11 @@ enum { FIO_SG_WRITE = 1, - FIO_SG_WRITE_VERIFY = 2, - FIO_SG_WRITE_SAME = 3 + FIO_SG_WRITE_VERIFY, + FIO_SG_WRITE_SAME, + FIO_SG_VERIFY_BYTCHK_00, + FIO_SG_VERIFY_BYTCHK_01, + FIO_SG_VERIFY_BYTCHK_11, }; struct sg_options { @@ -128,6 +131,18 @@ static struct fio_option options[] = { .oval = FIO_SG_WRITE_SAME, .help = "Issue SCSI WRITE SAME commands", }, + { .ival = "verify_bytchk_00", + .oval = FIO_SG_VERIFY_BYTCHK_00, + .help = "Issue SCSI VERIFY commands with BYTCHK set to 00", + }, + { .ival = "verify_bytchk_01", + .oval = FIO_SG_VERIFY_BYTCHK_01, + .help = "Issue SCSI VERIFY commands with BYTCHK set to 01", + }, + { .ival = "verify_bytchk_11", + .oval = FIO_SG_VERIFY_BYTCHK_11, + .help = "Issue SCSI VERIFY commands with BYTCHK set to 11", + }, }, .category = FIO_OPT_C_ENGINE, .group = FIO_OPT_G_SG, @@ -576,6 +591,28 @@ static int fio_sgio_prep(struct thread_data *td, struct io_u *io_u) else hdr->cmdp[0] = 0x93; // write same(16) break; + case FIO_SG_VERIFY_BYTCHK_00: + if (lba < MAX_10B_LBA) + hdr->cmdp[0] = 0x2f; // VERIFY(10) + else + hdr->cmdp[0] = 0x8f; // VERIFY(16) + hdr->dxfer_len = 0; + break; + case FIO_SG_VERIFY_BYTCHK_01: + if (lba < MAX_10B_LBA) + hdr->cmdp[0] = 0x2f; // VERIFY(10) + else + hdr->cmdp[0] = 0x8f; // VERIFY(16) + hdr->cmdp[1] |= 0x02; // BYTCHK = 01b + break; + case FIO_SG_VERIFY_BYTCHK_11: + if (lba < MAX_10B_LBA) + hdr->cmdp[0] = 0x2f; // VERIFY(10) + else + hdr->cmdp[0] = 0x8f; // VERIFY(16) + hdr->cmdp[1] |= 0x06; // BYTCHK = 11b + hdr->dxfer_len = sd->bs; + break; }; fio_sgio_rw_lba(hdr, lba, nr_blocks);