Loading drivers/scsi/libata-scsi.c +28 −0 Original line number Diff line number Diff line Loading @@ -1450,6 +1450,34 @@ unsigned int ata_scsiop_report_luns(struct ata_scsi_args *args, u8 *rbuf, return 0; } /** * ata_scsi_set_sense - Set SCSI sense data and status * @cmd: SCSI request to be handled * @sk: SCSI-defined sense key * @asc: SCSI-defined additional sense code * @ascq: SCSI-defined additional sense code qualifier * * Helper function that builds a valid fixed format, current * response code and the given sense key (sk), additional sense * code (asc) and additional sense code qualifier (ascq) with * a SCSI command status of %SAM_STAT_CHECK_CONDITION and * DRIVER_SENSE set in the upper bits of scsi_cmnd::result . * * LOCKING: * Not required */ void ata_scsi_set_sense(struct scsi_cmnd *cmd, u8 sk, u8 asc, u8 ascq) { cmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION; cmd->sense_buffer[0] = 0x70; /* fixed format, current */ cmd->sense_buffer[2] = sk; cmd->sense_buffer[7] = 18 - 8; /* additional sense length */ cmd->sense_buffer[12] = asc; cmd->sense_buffer[13] = ascq; } /** * ata_scsi_badcmd - End a SCSI request with an error * @cmd: SCSI request to be handled Loading drivers/scsi/libata.h +2 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,8 @@ extern unsigned int ata_scsiop_report_luns(struct ata_scsi_args *args, u8 *rbuf, extern void ata_scsi_badcmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *), u8 asc, u8 ascq); extern void ata_scsi_set_sense(struct scsi_cmnd *cmd, u8 sk, u8 asc, u8 ascq); extern void ata_scsi_rbuf_fill(struct ata_scsi_args *args, unsigned int (*actor) (struct ata_scsi_args *args, u8 *rbuf, unsigned int buflen)); Loading Loading
drivers/scsi/libata-scsi.c +28 −0 Original line number Diff line number Diff line Loading @@ -1450,6 +1450,34 @@ unsigned int ata_scsiop_report_luns(struct ata_scsi_args *args, u8 *rbuf, return 0; } /** * ata_scsi_set_sense - Set SCSI sense data and status * @cmd: SCSI request to be handled * @sk: SCSI-defined sense key * @asc: SCSI-defined additional sense code * @ascq: SCSI-defined additional sense code qualifier * * Helper function that builds a valid fixed format, current * response code and the given sense key (sk), additional sense * code (asc) and additional sense code qualifier (ascq) with * a SCSI command status of %SAM_STAT_CHECK_CONDITION and * DRIVER_SENSE set in the upper bits of scsi_cmnd::result . * * LOCKING: * Not required */ void ata_scsi_set_sense(struct scsi_cmnd *cmd, u8 sk, u8 asc, u8 ascq) { cmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION; cmd->sense_buffer[0] = 0x70; /* fixed format, current */ cmd->sense_buffer[2] = sk; cmd->sense_buffer[7] = 18 - 8; /* additional sense length */ cmd->sense_buffer[12] = asc; cmd->sense_buffer[13] = ascq; } /** * ata_scsi_badcmd - End a SCSI request with an error * @cmd: SCSI request to be handled Loading
drivers/scsi/libata.h +2 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,8 @@ extern unsigned int ata_scsiop_report_luns(struct ata_scsi_args *args, u8 *rbuf, extern void ata_scsi_badcmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *), u8 asc, u8 ascq); extern void ata_scsi_set_sense(struct scsi_cmnd *cmd, u8 sk, u8 asc, u8 ascq); extern void ata_scsi_rbuf_fill(struct ata_scsi_args *args, unsigned int (*actor) (struct ata_scsi_args *args, u8 *rbuf, unsigned int buflen)); Loading