diff --git a/scst/src/dev_handlers/scst_vdisk.c b/scst/src/dev_handlers/scst_vdisk.c index 3e301810f..0a92f4871 100644 --- a/scst/src/dev_handlers/scst_vdisk.c +++ b/scst/src/dev_handlers/scst_vdisk.c @@ -1082,6 +1082,11 @@ static enum compl_status_e vdisk_exec_send_diagnostic(struct vdisk_cmd_params *p return CMD_SUCCEEDED; } +static enum compl_status_e vdisk_exec_format_unit(struct vdisk_cmd_params *p) +{ + return CMD_SUCCEEDED; +} + static enum compl_status_e vdisk_invalid_opcode(struct vdisk_cmd_params *p) { TRACE_DBG("Invalid opcode %d", p->cmd->cdb[0]); @@ -1112,7 +1117,8 @@ static enum compl_status_e vdisk_invalid_opcode(struct vdisk_cmd_params *p) [WRITE_SAME] = vdisk_exec_write_same, \ [WRITE_SAME_16] = vdisk_exec_write_same, \ [MAINTENANCE_IN] = vdisk_exec_maintenance_in, \ - [SEND_DIAGNOSTIC] = vdisk_exec_send_diagnostic, + [SEND_DIAGNOSTIC] = vdisk_exec_send_diagnostic, \ + [FORMAT_UNIT] = vdisk_exec_format_unit, static vdisk_op_fn blockio_ops[256] = { [READ_6] = blockio_exec_read, diff --git a/scst/src/scst_lib.c b/scst/src/scst_lib.c index 3b178c65e..f8964e382 100644 --- a/scst/src/scst_lib.c +++ b/scst/src/scst_lib.c @@ -6380,6 +6380,9 @@ static int get_cdb_info_fmt(struct scst_cmd *cmd, cmd->op_flags |= SCST_LBA_NOT_VALID; cmd->lba = 0; + /* It is not really supported anyway */ + cmd->data_len = 0; + if (cmd->cdb[1] & 0x10/*FMTDATA*/) { cmd->data_direction = SCST_DATA_WRITE; cmd->op_flags |= SCST_UNKNOWN_LENGTH;