Source
1520
1520
case READ_6:
1521
1521
if (ldev_info->state == MYRB_DEVICE_WO) {
1522
1522
/* Data protect, attempt to read invalid data */
1523
1523
scsi_build_sense_buffer(0, scmd->sense_buffer,
1524
1524
DATA_PROTECT, 0x21, 0x06);
1525
1525
scmd->result = (DRIVER_SENSE << 24) |
1526
1526
SAM_STAT_CHECK_CONDITION;
1527
1527
scmd->scsi_done(scmd);
1528
1528
return 0;
1529
1529
}
1530
+
/* fall through */
1530
1531
case WRITE_6:
1531
1532
lba = (((scmd->cmnd[1] & 0x1F) << 16) |
1532
1533
(scmd->cmnd[2] << 8) |
1533
1534
scmd->cmnd[3]);
1534
1535
block_cnt = scmd->cmnd[4];
1535
1536
break;
1536
1537
case READ_10:
1537
1538
if (ldev_info->state == MYRB_DEVICE_WO) {
1538
1539
/* Data protect, attempt to read invalid data */
1539
1540
scsi_build_sense_buffer(0, scmd->sense_buffer,
1540
1541
DATA_PROTECT, 0x21, 0x06);
1541
1542
scmd->result = (DRIVER_SENSE << 24) |
1542
1543
SAM_STAT_CHECK_CONDITION;
1543
1544
scmd->scsi_done(scmd);
1544
1545
return 0;
1545
1546
}
1547
+
/* fall through */
1546
1548
case WRITE_10:
1547
1549
case VERIFY: /* 0x2F */
1548
1550
case WRITE_VERIFY: /* 0x2E */
1549
1551
lba = get_unaligned_be32(&scmd->cmnd[2]);
1550
1552
block_cnt = get_unaligned_be16(&scmd->cmnd[7]);
1551
1553
break;
1552
1554
case READ_12:
1553
1555
if (ldev_info->state == MYRB_DEVICE_WO) {
1554
1556
/* Data protect, attempt to read invalid data */
1555
1557
scsi_build_sense_buffer(0, scmd->sense_buffer,
1556
1558
DATA_PROTECT, 0x21, 0x06);
1557
1559
scmd->result = (DRIVER_SENSE << 24) |
1558
1560
SAM_STAT_CHECK_CONDITION;
1559
1561
scmd->scsi_done(scmd);
1560
1562
return 0;
1561
1563
}
1564
+
/* fall through */
1562
1565
case WRITE_12:
1563
1566
case VERIFY_12: /* 0xAF */
1564
1567
case WRITE_VERIFY_12: /* 0xAE */
1565
1568
lba = get_unaligned_be32(&scmd->cmnd[2]);
1566
1569
block_cnt = get_unaligned_be32(&scmd->cmnd[6]);
1567
1570
break;
1568
1571
default:
1569
1572
/* Illegal request, invalid opcode */
1570
1573
scsi_build_sense_buffer(0, scmd->sense_buffer,
1571
1574
ILLEGAL_REQUEST, 0x20, 0);