Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79775567 authored by Hannes Reinecke's avatar Hannes Reinecke Committed by James Bottomley
Browse files

[SCSI] block: improve detail in I/O error messages



Classify severity of I/O errors for target, nexus, and
transport errors.

Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
Acked-by: default avatarJens Axboe <jaxboe@fusionio.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 751b2a7d
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -2044,8 +2044,25 @@ bool blk_update_request(struct request *req, int error, unsigned int nr_bytes)

	if (error && req->cmd_type == REQ_TYPE_FS &&
	    !(req->cmd_flags & REQ_QUIET)) {
		printk(KERN_ERR "end_request: I/O error, dev %s, sector %llu\n",
				req->rq_disk ? req->rq_disk->disk_name : "?",
		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 -EIO:
		default:
			error_type = "I/O";
			break;
		}
		printk(KERN_ERR "end_request: %s error, dev %s, sector %llu\n",
		       error_type, req->rq_disk ? req->rq_disk->disk_name : "?",
		       (unsigned long long)blk_rq_pos(req));
	}