From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7FCEE4EC65B; Tue, 8 Sep 2026 09:03:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858224; cv=none; b=DFGTKz3te4+kT3c3ioA04OuelbJFbSo+tMidhrG53s+BCOEzmOUEWl3ZZbPDU5YRJLHKdEEATxKJB2h94Mpi6jammb+GDrgvN1XQKmYPYdDbAo7nP5k+YP8bWsu7xpSHUjcFJP/5pmWwpw2pGG0ewcXxAGb5ejv3QMnh2qgrNi0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858224; c=relaxed/simple; bh=9sbhel3DNxevZGBZAdbw4MF1UgSRre1JOzZOCcQmQCA=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=R6rbnJ2a0hokMUGQxuEODb/QkdG01IpxIFrcIiIcd+ZqTZH0nAJDzXCkpG96TxBGxxwgS5iMuaHpfL1IGAbaVLQZmIuhPur7BfKDldtOPCgnREbUIPw/1foyU6/hCcuaG2anUflFy3aD8CddmlDbAB09r+RaRkxFQ80YQGSA9F4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=A3ktccWL; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="A3ktccWL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 123251F00ACA; Tue, 8 Sep 2026 09:03:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788858220; bh=5oeI1FM5Mdnc9Cp8WnwSdz9X548W95XQa4KkTruA5Vo=; h=From:To:Subject:Date:In-Reply-To:References; b=A3ktccWLktXYWAlj84M95ScXTo4QWYwCTlFmJviVDZWdtOQd9FTjzo9vshw3YJysk SmmAqfNarWMI3zx2QtPkmFtk2zVCFgv1v9wMqdVqsvvk0TzaZ+vE/+QYIi1KbgSmCq ljvKh43cxo9ajVeediYwl1P1setLwkxBAw5baoId1R5ZhlhRDtgHBkCo83D27/Fu7Z 9Ix00z3uVRFWBxcChQ3KmDg3sABn+3woSLMGggED3QBc87wDUNy2TpFOgf0nnlzOdb eKKfFATHpQlnfKRRvA8y1sqCvYgK0r5PytV+jhpikiEwNraTTJ75DgUXKkyZf42CJ3 X50dndwcNfiaw== From: Damien Le Moal To: "Martin K . Petersen" , "James E . J . Bottomley" , linux-scsi@vger.kernel.org, linux-ide@vger.kernel.org, Niklas Cassel , linux-usb@vger.kernel.org, Alan Stern , Greg Kroah-Hartman , linux-s390@vger.kernel.org, Heiko Carstens Subject: [PATCH v6 11/40] scsi: ch: use 16-bits defined sense codes Date: Tue, 8 Sep 2026 18:02:39 +0900 Message-ID: <20260908090308.1085097-12-dlemoal@kernel.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260908090308.1085097-1-dlemoal@kernel.org> References: <20260908090308.1085097-1-dlemoal@kernel.org> Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Refactor the SCSI media changer driver to use the 16-bits sense_code field of struct scsi_sense_hdr and struct scsi_failure and replace all hard-coded additional sense codes and additional sense code qualifiers with the enum values defined in include/scsi/scsi_sense.h. This helps with code clarity as the sense codes being processed are easier to test and self-documented. No functional change intended. Signed-off-by: Damien Le Moal Reviewed-by: Johannes Thumshirn Reviewed-by: Hannes Reinecke --- drivers/scsi/ch.c | 53 ++++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c index b804291a36ff..87e51e50a741 100644 --- a/drivers/scsi/ch.c +++ b/drivers/scsi/ch.c @@ -123,38 +123,32 @@ static DEFINE_IDR(ch_index_idr); static DEFINE_SPINLOCK(ch_index_lock); static const struct { - unsigned char sense; - unsigned char asc; - unsigned char ascq; - int errno; + u8 sense_key; + u16 sense_code; + int errno; } ch_err[] = { /* Just filled in what looks right. Hav'nt checked any standard paper for these errno assignments, so they may be wrong... */ { - .sense = ILLEGAL_REQUEST, - .asc = 0x21, - .ascq = 0x01, - .errno = EBADSLT, /* Invalid element address */ + .sense_key = ILLEGAL_REQUEST, + .sense_code = INVALID_ELEMENT_ADDRESS, + .errno = EBADSLT, },{ - .sense = ILLEGAL_REQUEST, - .asc = 0x28, - .ascq = 0x01, - .errno = EBADE, /* Import or export element accessed */ + .sense_key = ILLEGAL_REQUEST, + .sense_code = IMPORT_OR_EXPORT_ELEMENT_ACCESSED, + .errno = EBADE, },{ - .sense = ILLEGAL_REQUEST, - .asc = 0x3B, - .ascq = 0x0D, - .errno = EXFULL, /* Medium destination element full */ + .sense_key = ILLEGAL_REQUEST, + .sense_code = MEDIUM_DESTINATION_ELEMENT_FULL, + .errno = EXFULL, },{ - .sense = ILLEGAL_REQUEST, - .asc = 0x3B, - .ascq = 0x0E, - .errno = EBADE, /* Medium source element empty */ + .sense_key = ILLEGAL_REQUEST, + .sense_code = MEDIUM_SOURCE_ELEMENT_EMPTY, + .errno = EBADE, },{ - .sense = ILLEGAL_REQUEST, - .asc = 0x20, - .ascq = 0x00, - .errno = EBADRQC, /* Invalid command operation code */ + .sense_key = ILLEGAL_REQUEST, + .sense_code = INVALID_COMMAND_OP_CODE, + .errno = EBADRQC, },{ /* end of list */ } @@ -167,12 +161,10 @@ static int ch_find_errno(struct scsi_sense_hdr *sshdr) int i,errno = 0; /* Check to see if additional sense information is available */ - if (scsi_sense_valid(sshdr) && - sshdr->asc != 0) { + if (scsi_sense_valid(sshdr) && scsi_sense_asc(sshdr) != 0) { for (i = 0; ch_err[i].errno != 0; i++) { - if (ch_err[i].sense == sshdr->sense_key && - ch_err[i].asc == sshdr->asc && - ch_err[i].ascq == sshdr->ascq) { + if (ch_err[i].sense_key == sshdr->sense_key && + ch_err[i].sense_code == sshdr->sense_code) { errno = -ch_err[i].errno; break; } @@ -192,8 +184,7 @@ ch_do_scsi(scsi_changer *ch, unsigned char *cmd, int cmd_len, struct scsi_failure failure_defs[] = { { .sense_key = UNIT_ATTENTION, - .asc = SCMD_FAILURE_ASC_ANY, - .ascq = SCMD_FAILURE_ASCQ_ANY, + .sense_code = SCMD_FAILURE_SENSE_CODE_ANY, .allowed = 3, .result = SAM_STAT_CHECK_CONDITION, }, -- 2.55.0