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

Commit ab24fbd3 authored by Stefan Haberland's avatar Stefan Haberland Committed by Martin Schwidefsky
Browse files

s390/dasd: suppress command reject error for query host access command



On some z/VM systems the query host access command is not supported for
temp disks, though the corresponding feature code is set.
This does not have any impact beside that the information is not available.
Suppress the full blown command reject error messages to not confuse the
user. The error is still logged in the s390dbf.

Signed-off-by: default avatarStefan Haberland <sth@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent ccd53fa2
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1052,8 +1052,9 @@ dasd_3990_erp_com_rej(struct dasd_ccw_req * erp, char *sense)
	} else {
		/* fatal error -  set status to FAILED
		   internal error 09 - Command Reject */
		dev_err(&device->cdev->dev, "An error occurred in the DASD "
			"device driver, reason=%s\n", "09");
		if (!test_bit(DASD_CQR_SUPPRESS_CR, &erp->flags))
			dev_err(&device->cdev->dev,
				"An error occurred in the DASD device driver, reason=09\n");

		erp = dasd_3990_erp_cleanup(erp, DASD_CQR_FAILED);
	}
+9 −3
Original line number Diff line number Diff line
@@ -4927,10 +4927,14 @@ static void dasd_eckd_dump_sense(struct dasd_device *device,
		dasd_eckd_dump_sense_tcw(device, req, irb);
	} else {
		/*
		 * In some cases the 'No Record Found' error might be expected
		 * and log messages shouldn't be written then. Check if the
		 * according suppress bit is set.
		 * In some cases the 'Command Reject' or 'No Record Found'
		 * error might be expected and log messages shouldn't be
		 * written then. Check if the according suppress bit is set.
		 */
		if (sense && sense[0] & SNS0_CMD_REJECT &&
		    test_bit(DASD_CQR_SUPPRESS_CR, &req->flags))
			return;

		if (sense && sense[1] & SNS1_NO_REC_FOUND &&
		    test_bit(DASD_CQR_SUPPRESS_NRF, &req->flags))
			return;
@@ -5223,6 +5227,8 @@ static int dasd_eckd_query_host_access(struct dasd_device *device,

	cqr->buildclk = get_tod_clock();
	cqr->status = DASD_CQR_FILLED;
	/* the command might not be supported, suppress error message */
	__set_bit(DASD_CQR_SUPPRESS_CR, &cqr->flags);
	rc = dasd_sleep_on_interruptible(cqr);
	if (rc == 0) {
		*data = *host_access;
+1 −1
Original line number Diff line number Diff line
@@ -239,11 +239,11 @@ struct dasd_ccw_req {
					 */
/*
 * The following flags are used to suppress output of certain errors.
 * These flags should only be used for format checks!
 */
#define DASD_CQR_SUPPRESS_NRF	4	/* Suppress 'No Record Found' error */
#define DASD_CQR_SUPPRESS_FP	5	/* Suppress 'File Protected' error*/
#define DASD_CQR_SUPPRESS_IL	6	/* Suppress 'Incorrect Length' error */
#define DASD_CQR_SUPPRESS_CR	7	/* Suppress 'Command Reject' error */

/* Signature for error recovery functions. */
typedef struct dasd_ccw_req *(*dasd_erp_fn_t) (struct dasd_ccw_req *);