From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932336AbdJJQCL (ORCPT ); Tue, 10 Oct 2017 12:02:11 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:28960 "EHLO esa5.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932075AbdJJQCJ (ORCPT ); Tue, 10 Oct 2017 12:02:09 -0400 X-IronPort-AV: E=Sophos;i="5.42,505,1500912000"; d="scan'208";a="57280308" From: Bart Van Assche To: "jthumshirn@suse.de" , "martin.petersen@oracle.com" CC: "linux-scsi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "tj@kernel.org" , Bart Van Assche , "maier@linux.vnet.ibm.com" , "stern@rowland.harvard.edu" , "oneukum@suse.com" Subject: Re: [PATCH] scsi: use set_host_byte instead of open-coding it Thread-Topic: [PATCH] scsi: use set_host_byte instead of open-coding it Thread-Index: AQHTQdyl1BpVenh8qEe0yaqnaaGGmaLdPoCA Date: Tue, 10 Oct 2017 16:02:04 +0000 Message-ID: <1507651323.2815.18.camel@wdc.com> References: <20171010152939.21353-1-jthumshirn@suse.de> In-Reply-To: <20171010152939.21353-1-jthumshirn@suse.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Bart.VanAssche@wdc.com; x-originating-ip: [63.163.107.100] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CY1PR0401MB1533;20:ZjwPj3wDMupXo3rb8z39p3JDvYCyQPj5soI216NhVcCHrnshdfLnAQx8nMDezwp5WPoMbG9x1RGJu1n0OvEaxGLcqGrfVYK8uoCBUCl9NGmMjXaA1YX+4cnjd3hDHpMbFcBx4yevhszJYbTCSPvaq1CKAZuQVBN6RJ/3FGwpHEs= x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-correlation-id: 0a10c232-c2c3-4435-0643-08d50ff8404b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:CY1PR0401MB1533; x-ms-traffictypediagnostic: CY1PR0401MB1533: wdcipoutbound: EOP-TRUE x-exchange-antispam-report-test: UriScan:; x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(6055026)(6041248)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY1PR0401MB1533;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY1PR0401MB1533; x-forefront-prvs: 04569283F9 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(39860400002)(24454002)(189002)(377424004)(199003)(3660700001)(189998001)(86362001)(36756003)(101416001)(50986999)(103116003)(2900100001)(2950100002)(54356999)(229853002)(6436002)(6506006)(6486002)(77096006)(68736007)(106356001)(54906003)(110136005)(81156014)(478600001)(76176999)(3280700002)(2501003)(305945005)(33646002)(2906002)(66066001)(7736002)(14454004)(4326008)(81166006)(99286003)(8936002)(25786009)(72206003)(6512007)(8676002)(6116002)(5660300001)(105586002)(316002)(4001150100001)(3846002)(6246003)(53936002)(97736004)(102836003);DIR:OUT;SFP:1102;SCL:1;SRVR:CY1PR0401MB1533;H:CY1PR0401MB1536.namprd04.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <526C5EC07306D440B411A4CEA7D25BB2@namprd04.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2017 16:02:04.6976 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0401MB1533 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by nfs id v9AG4kwx024684 On Tue, 2017-10-10 at 17:29 +0200, Johannes Thumshirn wrote: > Call set_host_byte() instead of open-coding it. > > Converted using this simple Coccinelle spatch > > > @@ > local idexpression struct scsi_cmnd *c; > expression E1; > @@ > > - c->result = E1 << 16; > + set_host_byte(c, E1); > This is useful but I think we should take this a step further. How about the following approach: - Introduce four enumeration types - one for the msg byte codes, one for the host byte codes, one for the driver byte codes and one for SCSI sense codes. - Update the signatures of functions that store or extract these four bytes. - Change the data type of scsi_cmnd.result into something that makes regular assignments trigger a compiler error. I'm proposing this because there are several drivers that do not assign the SCSI host byte correctly: $ git grep -nH '>result = DID_' | grep -v '<< *16' | grep -v ': \*' drivers/scsi/ips.c:953: scsi_cmd->result = DID_ERROR; drivers/scsi/ips.c:2657: SC->result = DID_OK; drivers/scsi/libiscsi.c:1731: sc->result = DID_REQUEUE; drivers/scsi/qla2xxx/qla_bsg.c:152: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:167: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:184: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:236: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:976: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:1078: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:1261: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:1375: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:1480: bsg_reply->result = DID_OK; drivers/scsi/qla2xxx/qla_bsg.c:1516: bsg_reply->result = DID_OK; drivers/scsi/qlogicpti.c:1049: Cmnd->result = DID_BUS_BUSY; drivers/scsi/stex.c:615: cmd->result = DID_NO_CONNECT; Bart.