Hallo Nicolas, I have applied both patches you provided to a new kernel and re-tested with this new kernel. This still results in the same behavior as before. Nevertheless I receive the following information in the kernel log: kernel: [ 453.378652] Returning TCM_UNSUPPORTED_SCSI_OPCODE for have_tp=0 kernel: [ 453.379020] Unknown transport error for CDB 0x12: -22 kernel: [ 453.386501] Returning TCM_UNSUPPORTED_SCSI_OPCODE for have_tp=0 kernel: [ 453.386660] Unknown transport error for CDB 0x12: -22 kernel: [ 453.393735] Returning TCM_UNSUPPORTED_SCSI_OPCODE for have_tp=0 kernel: [ 453.396266] Unknown transport error for CDB 0x12: -22 kernel: [ 579.765875] Returning TCM_UNSUPPORTED_SCSI_OPCODE for have_tp=0 kernel: [ 579.766215] Unknown transport error for CDB 0x12: -22 kernel: [ 579.771046] Returning TCM_UNSUPPORTED_SCSI_OPCODE for have_tp=0 kernel: [ 579.771246] Unknown transport error for CDB 0x12: -22 kernel: [ 579.773891] Returning TCM_UNSUPPORTED_SCSI_OPCODE for have_tp=0 kernel: [ 579.774054] Unknown transport error for CDB 0x12: -22 kernel: [ 632.174298] WRITE_SAME w/o UNMAP bit not supported for Block Discard Emulation kernel: [ 632.187371] WRITE_SAME w/o UNMAP bit not supported for Block Discard Emulation The last message is repeated approx. 65 times per second until the ESXi system is powered off A LAN trace is available. Please let me know, if you need it. Just for completeness, the target_core_cdb.c file changes used for the new kernel look as following: target_emulate_evpd_b0(struct se_cmd *cmd, unsigned char *buf) { struct se_device *dev = cmd->se_dev; int have_tp = 0; /* * Following sbc3r22 section 6.5.3 Block Limits VPD page, when * emulate_tpu=1 or emulate_tpws=1 we will be expect a * different page length for Thin Provisioning. */ if (dev->se_sub_dev->se_dev_attrib.emulate_tpu || dev->se_sub_dev->se_dev_attrib.emulate_tpws) have_tp = 1; if (!have_tp) { pr_warn("Returning TCM_UNSUPPORTED_SCSI_OPCODE for have_tp=0\n"); cmd->scsi_sense_reason = TCM_UNSUPPORTED_SCSI_OPCODE; return -EINVAL; } if (cmd->data_length < (0x10 + 4)) { pr_debug("Received data_length: %u" " too small for EVPD 0xb0\n", cmd->data_length); return -EINVAL; } if (have_tp && cmd->data_length < (0x3c + 4)) { pr_debug("Received data_length: %u" " too small for TPE=1 EVPD 0xb0\n", cmd->data_length); have_tp = 0; } buf[0] = dev->transport->get_device_type(dev); buf[3] = have_tp ? 0x3c : 0x10; /* Set WSNZ to 1 */ buf[4] = 0x01; /* * Set OPTIMAL TRANSFER LENGTH GRANULARITY */ if (have_tp) put_unaligned_be16(1, &buf[6]); /* * Set MAXIMUM TRANSFER LENGTH */ put_unaligned_be32(dev->se_sub_dev->se_dev_attrib.max_sectors, &buf[8]); ... and so on Best regards Sven -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html