Test: Add helper for MODESENSE6
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
This commit is contained in:
@@ -223,6 +223,20 @@ do { \
|
||||
CU_ASSERT_EQUAL(_r, 0); \
|
||||
} while (0);
|
||||
|
||||
#define MODESENSE6(...) \
|
||||
do { \
|
||||
int _r; \
|
||||
_r = modesense6(__VA_ARGS__); \
|
||||
if (_r == -2) { \
|
||||
logging(LOG_NORMAL, "[SKIPPED] MODESENSE6 " \
|
||||
"is not implemented."); \
|
||||
CU_PASS("[SKIPPED] Target does not support " \
|
||||
"MODESENSE6. Skipping test"); \
|
||||
return; \
|
||||
} \
|
||||
CU_ASSERT_EQUAL(_r, 0); \
|
||||
} while (0);
|
||||
|
||||
#define ORWRITE(...) \
|
||||
do { \
|
||||
int _r; \
|
||||
|
||||
@@ -42,10 +42,10 @@ test_compareandwrite_dpofua(void)
|
||||
CHECK_FOR_DATALOSS;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -30,20 +30,17 @@ test_modesense6_all_pages(void)
|
||||
{
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
int ret;
|
||||
|
||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||
logging(LOG_VERBOSE, "Test of MODESENSE6 AllPages");
|
||||
|
||||
|
||||
logging(LOG_VERBOSE, "Send MODESENSE6 command to fetch AllPages");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
logging(LOG_VERBOSE, "[SUCCESS] All Pages fetched.");
|
||||
|
||||
|
||||
logging(LOG_VERBOSE, "Try to unmarshall the DATA-IN buffer.");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
if (ms == NULL) {
|
||||
|
||||
@@ -33,18 +33,16 @@ test_modesense6_control(void)
|
||||
struct scsi_mode_page *ct_page;
|
||||
struct scsi_task *ap_task = NULL;
|
||||
struct scsi_task *ct_task = NULL;
|
||||
int ret;
|
||||
|
||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||
logging(LOG_VERBOSE, "Test of MODESENSE6 CONTROL page");
|
||||
|
||||
|
||||
logging(LOG_VERBOSE, "Fetch the CONTROL page via AllPages");
|
||||
logging(LOG_VERBOSE, "Send MODESENSE6 command to fetch AllPages");
|
||||
ret = modesense6(sd, &ap_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ap_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] All Pages fetched.");
|
||||
|
||||
|
||||
@@ -82,10 +80,9 @@ test_modesense6_control(void)
|
||||
|
||||
logging(LOG_VERBOSE, "Fetch the CONTROL page directly");
|
||||
logging(LOG_VERBOSE, "Send MODESENSE6 command to fetch CONTROL");
|
||||
ret = modesense6(sd, &ct_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_CONTROL, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ct_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_CONTROL, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
logging(LOG_VERBOSE, "[SUCCESS] CONTROL page fetched.");
|
||||
|
||||
logging(LOG_VERBOSE, "Try to unmarshall the DATA-IN buffer.");
|
||||
|
||||
@@ -40,7 +40,6 @@ test_modesense6_control_swp(void)
|
||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||
logging(LOG_VERBOSE, "Test of MODESENSE6 CONTROL SWP flag");
|
||||
|
||||
|
||||
logging(LOG_VERBOSE, "Set SWP to enable write protect");
|
||||
ret = set_swp(sd);
|
||||
if (ret == -2) {
|
||||
@@ -53,10 +52,9 @@ test_modesense6_control_swp(void)
|
||||
}
|
||||
|
||||
logging(LOG_VERBOSE, "Read the CONTROL page back from the device");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_CONTROL, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_CONTROL, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
logging(LOG_VERBOSE, "[SUCCESS] CONTROL page fetched.");
|
||||
|
||||
logging(LOG_VERBOSE, "Try to unmarshall the DATA-IN buffer.");
|
||||
|
||||
@@ -29,7 +29,6 @@ void
|
||||
test_modesense6_residuals(void)
|
||||
{
|
||||
struct scsi_task *ms_task = NULL;
|
||||
int ret;
|
||||
|
||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||
logging(LOG_VERBOSE, "Test of MODESENSE6 Residuals");
|
||||
@@ -40,12 +39,11 @@ test_modesense6_residuals(void)
|
||||
|
||||
logging(LOG_VERBOSE, "Try a MODESENSE6 command with 4 bytes of "
|
||||
"transfer length and verify that we don't get residuals.");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 4,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
logging(LOG_VERBOSE, "[SUCCESS] All Pages fetched.");
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 4,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] All Pages fetched.");
|
||||
|
||||
logging(LOG_VERBOSE, "Verify that we got at most 4 bytes of DATA-IN");
|
||||
if (ms_task->datain.size > 4) {
|
||||
@@ -70,10 +68,9 @@ test_modesense6_residuals(void)
|
||||
logging(LOG_VERBOSE, "Try a MODESENSE6 command with 255 bytes of "
|
||||
"transfer length and verify that we get residuals if the target returns less than the requested amount of data.");
|
||||
scsi_free_scsi_task(ms_task);
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
logging(LOG_VERBOSE, "[SUCCESS] All Pages fetched.");
|
||||
|
||||
if (ms_task->datain.size == 255) {
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_orwrite_dpofua(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpofua;
|
||||
int dpofua, usage_data_dpofua;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -42,10 +42,10 @@ test_orwrite_dpofua(void)
|
||||
CHECK_FOR_DATALOSS;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_read10_dpofua(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpofua;
|
||||
int dpofua, usage_data_dpofua;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -41,10 +41,10 @@ test_read10_dpofua(void)
|
||||
CHECK_FOR_SBC;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_read12_dpofua(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpofua;
|
||||
int dpofua, usage_data_dpofua;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -41,10 +41,10 @@ test_read12_dpofua(void)
|
||||
CHECK_FOR_SBC;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_read16_dpofua(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpofua;
|
||||
int dpofua, usage_data_dpofua;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -41,10 +41,10 @@ test_read16_dpofua(void)
|
||||
CHECK_FOR_SBC;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -63,14 +63,14 @@ test_reserve6_2initiators(void)
|
||||
RELEASE6(sd2);
|
||||
|
||||
logging(LOG_NORMAL, "Test we can still send MODE SENSE from the first initiator");
|
||||
ret = modesense6(sd, NULL, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, NULL, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_NORMAL, "MODE SENSE should fail from the second initiator");
|
||||
ret = modesense6(sd2, NULL, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_RESERVATION_CONFLICT);
|
||||
|
||||
MODESENSE6(sd2, NULL, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_RESERVATION_CONFLICT);
|
||||
|
||||
logging(LOG_NORMAL, "RESERVE6 from the second initiator should still fail");
|
||||
ret = reserve6_conflict(sd2);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_verify10_dpo(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpo;
|
||||
int dpofua, usage_data_dpo;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -44,10 +44,10 @@ test_verify10_dpo(void)
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_verify12_dpo(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpo;
|
||||
int dpofua, usage_data_dpo;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -44,10 +44,10 @@ test_verify12_dpo(void)
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_verify16_dpo(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpo;
|
||||
int dpofua, usage_data_dpo;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -44,10 +44,10 @@ test_verify16_dpo(void)
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_write10_dpofua(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpofua;
|
||||
int dpofua, usage_data_dpofua;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -42,10 +42,10 @@ test_write10_dpofua(void)
|
||||
CHECK_FOR_DATALOSS;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
@@ -82,7 +82,6 @@ test_write10_dpofua(void)
|
||||
if (dpofua) {
|
||||
WRITE10(sd, 0, block_size, block_size, 0, 1, 1, 0, 0, scratch,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
} else {
|
||||
WRITE10(sd, 0, block_size, block_size, 0, 1, 1, 0, 0, scratch,
|
||||
EXPECT_INVALID_FIELD_IN_CDB);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_write12_dpofua(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpofua;
|
||||
int dpofua, usage_data_dpofua;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -42,10 +42,10 @@ test_write12_dpofua(void)
|
||||
CHECK_FOR_DATALOSS;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_write16_dpofua(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpofua;
|
||||
int dpofua, usage_data_dpofua;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -42,10 +42,10 @@ test_write16_dpofua(void)
|
||||
CHECK_FOR_DATALOSS;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
@@ -82,7 +82,6 @@ test_write16_dpofua(void)
|
||||
if (dpofua) {
|
||||
WRITE16(sd, 0, block_size, block_size, 0, 1, 1, 0, 0, scratch,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
} else {
|
||||
WRITE16(sd, 0, block_size, block_size, 0, 1, 1, 0, 0, scratch,
|
||||
EXPECT_INVALID_FIELD_IN_CDB);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_writeatomic16_dpofua(void)
|
||||
{
|
||||
int ret, gran, dpofua, usage_data_dpofua;
|
||||
int gran, dpofua, usage_data_dpofua;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -49,10 +49,10 @@ test_writeatomic16_dpofua(void)
|
||||
gran = inq_bl->atomic_gran ? inq_bl->atomic_gran : 1;
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_writeverify10_dpo(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpo;
|
||||
int dpofua, usage_data_dpo;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -44,10 +44,10 @@ test_writeverify10_dpo(void)
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_writeverify12_dpo(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpo;
|
||||
int dpofua, usage_data_dpo;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -44,10 +44,10 @@ test_writeverify12_dpo(void)
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
void
|
||||
test_writeverify16_dpo(void)
|
||||
{
|
||||
int ret, dpofua, usage_data_dpo;
|
||||
int dpofua, usage_data_dpo;
|
||||
struct scsi_task *ms_task = NULL;
|
||||
struct scsi_mode_sense *ms;
|
||||
struct scsi_task *rso_task = NULL;
|
||||
@@ -44,10 +44,10 @@ test_writeverify16_dpo(void)
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "Read the DPOFUA flag from mode sense data");
|
||||
ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
CU_ASSERT_EQUAL(ret, 0);
|
||||
MODESENSE6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT,
|
||||
SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255,
|
||||
EXPECT_STATUS_GOOD);
|
||||
|
||||
logging(LOG_VERBOSE, "[SUCCESS] Mode sense returned status GOOD");
|
||||
ms = scsi_datain_unmarshall(ms_task);
|
||||
dpofua = ms && (ms->device_specific_parameter & 0x10);
|
||||
|
||||
Reference in New Issue
Block a user