Sense Key : Illegal Request [current], Add. Sense: Invalid field in cdb with Write Same commands with Nimble storage

Solution Verified - Updated

Environment

  • Red Hat Enterprise Linux 7.3
  • Red Hat Enterprise Virtualization
    • Nimble storage

Issue

  • "Sense Key : Illegal Request [current], Add. Sense: Invalid field in cdb" messages in syslog when vdsm starts qemu-img convert command to import the template.
Apr  6 19:20:17 hostname kernel: scsi_verify_blk_ioctl: 8 callbacks suppressed
Apr  6 19:20:17 hostname kernel: dd: sending ioctl 80306d02 to a partition!
Apr  6 19:20:17 hostname kernel: dd: sending ioctl 80306d02 to a partition!
Apr  6 19:20:17 hostname kernel: dd: sending ioctl 80306d02 to a partition!
Apr  6 19:20:17 hostname kernel: dd: sending ioctl 80306d02 to a partition!
Apr  6 19:20:17 hostname kernel: qemu-img: sending ioctl 5326 to a partition!
Apr  6 19:20:17 hostname kernel: qemu-img: sending ioctl 5326 to a partition!
Apr  6 19:20:17 hostname kernel: qemu-img: sending ioctl 5326 to a partition!
Apr  6 19:20:17 hostname kernel: sd 0:0:3:20: [sdj] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Apr  6 19:20:17 hostname kernel: sd 0:0:3:20: [sdj] tag#0 Sense Key : Illegal Request [current] 
Apr  6 19:20:17 hostname kernel: sd 0:0:3:20: [sdj] tag#0 Add. Sense: Invalid field in cdb
Apr  6 19:20:17 hostname kernel: sd 0:0:3:20: [sdj] tag#0 CDB: Write same(16) 93 08 00 00 00 00 26 08 08 00 00 20 00 00 00 00
Apr  6 19:20:17 hostname kernel: blk_update_request: critical target error, dev sdj, sector 638060544
Apr  6 19:20:17 hostname kernel: blk_update_request: critical target error, dev dm-7, sector 638060544
Apr  6 19:20:17 hostname kernel: sd 0:0:3:20: [sdj] tag#1 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Apr  6 19:20:17 hostname kernel: sd 0:0:3:20: [sdj] tag#1 Sense Key : Illegal Request [current] 
Apr  6 19:20:17 hostname kernel: sd 0:0:3:20: [sdj] tag#1 Add. Sense: Invalid field in cdb
Apr  6 19:20:17 hostname kernel: sd 0:0:3:20: [sdj] tag#1 CDB: Write same(16) 93 08 00 00 00 00 26 28 08 00 00 1f ff ff 00 00
Apr  6 19:20:17 hostname kernel: blk_update_request: critical target error, dev sdj, sector 640157696
Apr  6 19:20:17 hostname kernel: blk_update_request: critical target error, dev dm-7, sector 640157696

Resolution

  • Update the storage array firmware.

Root Cause

As could be seen from the above messages, the write operation with the command Write same was being performed. Write same command returns the error code -EREMOTEIO due to which we get the message

Apr  6 19:20:17 hostname kernel: blk_update_request: critical target error, dev sdj, sector 640157696


"block/blk-core.c"
-------------------

bool blk_update_request(struct request *req, int error, unsigned int nr_bytes)
{
        int total_bytes;

        trace_block_rq_complete(req->q, req, nr_bytes);

        if (!req->bio)
                return false;

[.... ]
        if (req->cmd_type == REQ_TYPE_FS)
                req->errors = 0;

        if (error && req->cmd_type == REQ_TYPE_FS &&
            !(req->cmd_flags & REQ_QUIET)) {
                char *error_type;

                switch (error) {
                case -ENOLINK:
                        error_type = "recoverable transport";
                        break;
                case -EREMOTEIO:
                        error_type = "critical target";
                        break;
                case -EBADE:
                        error_type = "critical nexus";
                        break;
                case -ENOSPC:
                        error_type = "critical space allocation";
                        break;
                case -ENODATA:
                        error_type = "critical medium";
                        break;
                case -EIO:
                default:
                        error_type = "I/O";
                        break;
                }
                printk_ratelimited(KERN_ERR "%s: %s error, dev %s, sector %llu\n",
                                   __func__, error_type, req->rq_disk ?
                                   req->rq_disk->disk_name : "?",
                                   (unsigned long long)blk_rq_pos(req));

        }

Due to the error messages, 'Sense Key : Illegal Request [current]' it would also be helpful to involve storage vendor to investigate the issue.

	Sense Key
	5h           ILLEGAL REQUEST.  Indicates that there was an illegal parameter in the 
	             command descriptor block or in the additional parameters supplied as data 
	             for some commands (FORMAT UNIT, SEARCH DATA, etc.).  If the target detects an 
	             invalid parameter in the command descriptor block, then it shall terminate the
	             command without altering the medium.  If the target detects an invalid parameter
	             in the additional parameters supplied as data, then the target may have already
	             altered the medium.  This sense key may also indicate that an invalid IDENTIFY
	             message was received.
SBR
Category
Tags

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.