From patchwork Thu Aug 9 19:41:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 10561857 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 76A3B13BB for ; Thu, 9 Aug 2018 19:42:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 659432B97D for ; Thu, 9 Aug 2018 19:42:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 58FBD2B979; Thu, 9 Aug 2018 19:42:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A232B2B979 for ; Thu, 9 Aug 2018 19:42:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726997AbeHIWIa (ORCPT ); Thu, 9 Aug 2018 18:08:30 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:1352 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726744AbeHIWI3 (ORCPT ); Thu, 9 Aug 2018 18:08:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1533843731; x=1565379731; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=TuwmJ1dPM3f2L/zl7hvEbMUxi24nkapUm/BPnHdZY5M=; b=huWnR3EmX49oJUOyE/qam0tMH73tnOfjtON/EmI6Xa4UlVLoBc1nxaS5 EcB3+a+o4QxNKS58Ar9WF+Nzs9sjqD5UOH1EijUpD1hMv2kgIF/YyggU6 fyIvQq2CPfWnvTlnXbMuvsQu0Ddlz3X1nLVaR+Z7hjhsCAk6KWwg0L6fK /yX78Ji/ob9SFnCHXl+An/fAPUf4kmH6igCrtd4odDp17JOGlxtcAge4D AwK4J/8u0AK+qSZl57C1iJWnt1RVEfjI5uUxdbfHqF08CPBW+kQmAYsin RG/Lsc+ePjmvqXfjX8pTfvwqUhy18WgPKqEECm4JyQa2kly78h7iXADtm g==; X-IronPort-AV: E=Sophos;i="5.53,215,1531756800"; d="scan'208";a="191119593" Received: from mail-sn1nam01lp0119.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([207.46.163.119]) by ob1.hgst.iphmx.com with ESMTP; 10 Aug 2018 03:42:10 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Srf3S9AcR8hnikPHhEAez1wc6e1/u2ufzfZ/ejIH6oo=; b=a4kz/k/2y2OHWFDrlgWzaQlGGtgPISkbASOiiJpfl9tWvZ42m8ECqHsIbLQ/mOqwRYRx+2iUSqTYH30rSIOBUyu1wEBHz0LooeS60YhAygcHJuxz9w5eNMfYj2L1s8IJ8BD3VEEdz4LljGhv+4I5rknRb+79ekNo5KYvTOrHJYw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Bart.VanAssche@wdc.com; Received: from asus.hsd1.ca.comcast.net (174.62.111.89) by MWHPR04MB1198.namprd04.prod.outlook.com (2603:10b6:300:71::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1038.23; Thu, 9 Aug 2018 19:42:06 +0000 From: Bart Van Assche To: Jens Axboe Cc: linux-block@vger.kernel.org, Christoph Hellwig , Bart Van Assche , "Martin K . Petersen" , Ming Lei , Jianchao Wang , Hannes Reinecke , Johannes Thumshirn , Alan Stern Subject: [PATCH v6 03/12] scsi: Only set RQF_DV for requests used for domain validation Date: Thu, 9 Aug 2018 12:41:40 -0700 Message-Id: <20180809194149.15285-4-bart.vanassche@wdc.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180809194149.15285-1-bart.vanassche@wdc.com> References: <20180809194149.15285-1-bart.vanassche@wdc.com> MIME-Version: 1.0 X-Originating-IP: [174.62.111.89] X-ClientProxiedBy: MWHPR2201CA0066.namprd22.prod.outlook.com (2603:10b6:301:5e::19) To MWHPR04MB1198.namprd04.prod.outlook.com (2603:10b6:300:71::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ffd0efc-85b7-41ea-d090-08d5fe303051 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:MWHPR04MB1198; X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;3:BGX3Xmu2zrZBg6YCMRd4mJ1P6fqg0IK0p5fbcmCNlN+/TtRIgTnnzI+jCvAsFrb0I2ty78fP+v3cvyTGG+NOMN919Xc1Vgjx3dj08JMB41UQ8cssA1WWq8caf4oSSyItD1cnEFyxYlA3UAxjLvbN0Up/LY1A5elJUNCmVg4F09UQ1QVer5jAnLQWF4ct8EYWDBkqTP2xBkDKXN0blgpFJHknjBbHX1ypKTP3VPfWAYJuyu3W1KWnGaK/CJjXJa2D;25:BP241tZ/kMd0z9tk/Sq/6T0IXj/+lsLv7DxoIZV1Pp9fAZrBP9GSErrNzdALe1+UWRLfaKXkidx4MSJHfav7ib6N/XR4AbRIOBi4xuW34C6mTHEIZf/6vE0lPxw+OC11Ja4m4Mi01y7mjzv/BSeIRWLEILz0atmav+vopjG05eg20sKowEM/o9x463W+/Tn/E8yS6L73AEC880qQN/Cqh9eYup8LeMaB+1l5iX2ZU36RLAL4BbLp9LUYzOzKqtySXBYB6GgMauOO2bKhJkZXM3aaq9PBuPhk0OJiyZNPuIkq/zlw6VWbCplKQyJhTmvtfcInzx/f5gCqUd/WKCdxWA==;31:dhShgeatAgd8Dsy1txadppoM0nldkqHhlEydkzagLEHPUdkDIK2Dx3oUIwX9ED9XhLZ4MW26Fcf4aPozefzLQzmtMNw6BFPJ7sGPelKtp8P30Lbrcc1pjPpknLeWx+iX05P4b1ANtilnDDCfcGEcv78NOaCy6g86Vf5/+GOLo2K4dcGADxDIrq3D5YMZDIoS+cxnkO1wZeRFNVbyoWzKm/ksSeFHbEMeP+Zcn8XW7/o= X-MS-TrafficTypeDiagnostic: MWHPR04MB1198: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;20:jHOfTDNEcI1AuSI0jk/o/lzzlkddGwd2fgN0RLs7gPmSh7Kmq2s3o9NCqptxwX9yb477nwCJ4JfEPQoKq2TredyWiv07Edm4Jdp4ASwLWSGtZKD1HyMbbGNXnRIg0/NNpnxGDHhhIW9rrW6WGLuscUB0Wm5ELgz8Cyu6RtqIZhpjZ4DV8YN9DANF0jV6ihzuz+yXj2h312x7R/YozlgKvD9H8IsfVqgOK131bOVQAY/8n1Lo+rPsM8MyuQ71rNREkzkWUaL21wDwjKaG6joVTtbPlTMLV06qQ1lnzwinVAUoWQf5mxKxJJP1RIJV1nRCUS7V3Zcw49oIxf5BYoTw0FIHgJ2ZHMHrFy/gU2JHX9xI/ixZD9wfFT5qO3Go5YpatggcdvKRY1yuc2+qhwd5FLE6FC/La0c5HwgKOoI8l8orTBlmOzen4I4t8cmI6AWcy8tylukHTkEv8L8Sr6xPO1zJLMY+JHy4YuADwEF4/mN/NAgfkaM4dh6mtTjrvGWO;4:q8bn/UmXT5qpsMQFvb72oSgdmL36B88E5SKQC4Wxrk4jTjrcXPSYHRaw970Sd4wZmWVwVoEntF+TyB3At69e1O1U59B4wBZCTFnf7Nw5ndG8TfQZCYsWDZgQuiigPfAUj96VNhtGXVq+qAgpMkB8Nh3WE42kxkCpdgotHRD/Exn6bRSHzfngu2hGGz+25F0YYHQP+NIXRk4t7dAQibZ8BXNO5rb4Xw9P0Zhhbv7LlcV7LYnF6qSM2RmY78YdXrr/1ZZGDJtrmYXmmyoyDcQu/cH+l/0EHft3wrnjhg/X7JiTgVJzznsjKS4oejEsZ54Qz3vOlZiYgHScUJF7fu/uOJ6CSESSeS29K3Yc/lGRQNZlyQKXh/RsMxqPVTS/+my4 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(35762410373642)(146099531331640)(17755550239193); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231311)(944501410)(52105095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(6072148)(201708071742011)(7699016);SRVR:MWHPR04MB1198;BCL:0;PCL:0;RULEID:;SRVR:MWHPR04MB1198; X-Forefront-PRVS: 0759F7A50A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(396003)(39860400002)(136003)(366004)(346002)(376002)(199004)(189003)(76176011)(50466002)(476003)(51416003)(4326008)(478600001)(52116002)(6486002)(105586002)(72206003)(48376002)(5660300001)(47776003)(305945005)(2616005)(956004)(7736002)(6916009)(6666003)(486006)(8936002)(2906002)(68736007)(36756003)(66066001)(575784001)(186003)(446003)(81166006)(50226002)(8676002)(81156014)(316002)(6506007)(386003)(106356001)(97736004)(25786009)(11346002)(16586007)(54906003)(14444005)(6116002)(1076002)(3846002)(86362001)(26005)(16526019)(53936002)(6512007);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR04MB1198;H:asus.hsd1.ca.comcast.net;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;23:q9hHtEhEHlKInB4X5Qpg+QX/nS7jzGRlhKJ5HvFoSKprszOGy5guYdwsPW9A+kPFaLaYCwpT7sy5vGZ6PO9Ijmm8gZf1j4vMAJmkf1coueTIbi0amwq/mqOYDbUrcasRoUgBiwMbf3Q5O93vlW/BxJ48o+cw+KAj3ybG9Uscf11ZGKcR89uZwefxsYUyyIIDCw3Lhd1sffxMqjfSq4G2XehqrEv+ne2NlaTJxFaB73d43TVedSHTwBylCNDoqMy0Cwkf9q97YpuCfKmAu6C7uzpUiPVvdc9lBboQL0o5GMdLAsAT7q0ohF8grzHPEdRTAtEXfrjIXLQcQvgcQjLHQPoFkeSB+aoYRNCjGqAMSauJcuhL011YSK5aOK9hQdaYAUdFo6xxTRDEh6umqzv6b7JRM+NP0X27GrGecfptRjdQ2FhrNizvMTwSbpPLFVDJj39/fnV09chWZ2Kl7R0DiUw3x9pH2QcaZsnPcZfTT7vcI3LWZceYCcQvqvnYhe+OsH8ke/k+OeveSZEOyXHaZyZLR+IzA6ver1qK4DbFJis/Hin9AF+G7qgShC5f/tL3LBuyc8ajknHgfgX2sGLFNlW+4x8ibdMZevCd7FvwZJ76ZoDtDkSSJjnCaBRqvBp/fwWo674/3GlHsev1YDpYkJQei819mqvxX2rcPTA6a6g0qbNvRczIf3rVSm5ikKMSsTH9V8046ZlM6Jw2Cn/HvX6NGH2IlQtnXx6S2chjK1nL8SaY0gWmfZwA/pxUGpnLED30HcqDb+PJSrhBUqeOeK6/C25mSGM3VsXibDjNOhQnaVLmllEb7nRj0t8p7DQsoBYuwrWjZkpq8EVJ7H8Vin7PivMtYU8B+jNAE6v9eU+apWAstNibIidRrnqVTzdOXdX0sNp5sqrin+Vg97ZbuiOBahvawhbGoGjpciKa7m8PhXLl9qPP3E1d+SJBst+/qcPgHwC7NqTdgfZ0q6XWS4A6NL27gwCJA+099if2EkM8LjbrXxufmATFXZe3Ctt4YjPKW6p2cQdT4OTEj/T4BNBT5b22W/RrUqeBlzTw7ApDNK5TD6RDhKC8yHYw7+AGaplww/kx4eVbU8wZcJKhkERLiDL0FagqT/W73eYX5wAeCmHiUDYvupk9B26ClOp3S9IsWDYgEjhkTNdV3k7SeF0taBz8PyMvTJeYHX6pR9ioUuaG/JOLgzjO5698/smMQGuiw/TgY/ca+yl6/Ae5aXIaLfZUumpdlzRzg8nRi7LI/oyV12w+seh5teVta9rx X-Microsoft-Antispam-Message-Info: yDKfTKe5QedzQE+9qNRBIN4EugdHf+WtBtCc5Pekjwn5xD9Ht+3LxAE37kJqQN65heXgAQMM+y4VGPki73wdAaj88MXtkGwKAFIlwoIQlevPW3yHV+dlSWR3eQOnuB+Aapj6IX1IoQmghxqjKDyW/+ZZilwrN/tLgiWFFV5R437u1gX3nVWwlypE6bhdxHMAGl+6EepYf+AYGSx7hJkm0DiG+hjlDiPqfoHK5dfMgyz+p7C3XG27l2mL3FXpTkmHh+zPnelF+jFhx3oUOfaM2cWeHl/Pxg5GSMeGoNb9zZSF9TQL8s+EobWUGFgReAHV0ieGAYFQEFlzuIDbFH8qgBqQDvVslBcaQyb4ddyzR5Y= X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;6:Tnr0MTxvTQJ8zL0s6MkU95T/Bp0yNs5BrpIEGDZCBySxSiDz+tsrEJ1jooWfiac3EaZ+ijmBY4SYKKZxnxYK1vvTMVUaVk03vLyo7FtFoP41+VK+g+mMhbpXD3z2QpAJ7pgN8Zrhx6rBu0J48P4p5XYttqU1McOYTgCAxS2SPbehy5X+Xe8dq8oNGPeDG4irjCBBTIG1TbDG2cvOWwgZb3k3lqy4Jw9XgyE0jCsKr1KW1ADlQMO4IV2GM2MdvFRCRzQEkIwKiKhAJ4Shbd0VU5WENM0kdNGTrRq9gNAb1lpyMC1qwzE8BpFFOAst+yLJ+lwtQ0Wt1JBE3k2WiXf2yRnr1rJYw8gowqdoH7+uAk6m8NDE7KblrXqaSmrHqXI/Hf0G/ZlW6qOPaHhWmohrg9hFN+DNXjpK+zxdmuBkiwxMdgpjPCiszAO3KKY+SIcaaHMt40YpnqsOQIh21oagug==;5:vUXVQqHVrICMTUwZtRQD5A2FgLO2j5bfavaxtN7rNzaMkXuimDiTR9dSvBNhDPJCWCZkaInz1gRhbANt0LwAwoYM/t3m9MA8yhfC9wdNWMf9H6F3i9QFVvgq1qTHBepq/vbCz60o6O1Rd6dN0s8t4kaQ53HchTaHALOzQ7adP5c=;7:4fZ5bitWHqFgIw7owBbrUx5QQPpa3wHTS3MATC9kEVmb/4KrKO0k81m+h7i/ktLPczrHpcsiMsTaj+zD/2UrF8tDS/WU6noWtifs700JiIdoFcIGRk4AMlkHoiHf71gpX2bW7lKtCtuj290mrNnHabf+sEwQ3271TrRZ2woCGzAdnFebdmkc8xqU2cDHxxnttSI+2ALNPMP7ZOxQPtCYp+4GFlj2FRmm0FX+vFAKu+XnJ5+R5bVM7kK+WItS1LyE SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB1198;20:yHdUFYCTM7X9bsSILCWeihghAKIxg1qTe+OdhWO0pbkzgcf2dIx3TLsmN5n92eOtKKxodfI8POTBAxEfbWIjcLc73hamXqaEpkkCDghQhZTe5e/2AJv4Dy4E0LfHTimGPtpaTqEoYb8o5BNnDkF+1YZUVwtSckZsC5T/42ORJFc= X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2018 19:42:06.1363 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ffd0efc-85b7-41ea-d090-08d5fe303051 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1198 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Instead of setting RQF_DV for all requests submitted by scsi_execute(), only set that flag for requests that are used for domain validation. Move the SCSI Parallel Interface (SPI) domain validation status from the transport data to struct scsi_target such that this status information can be accessed easily from inside scsi_execute(). This patch prevents that e.g. event checking can occur during domain validation. Signed-off-by: Bart Van Assche Cc: Martin K. Petersen Cc: Christoph Hellwig Cc: Ming Lei Cc: Jianchao Wang Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Alan Stern --- drivers/scsi/scsi_lib.c | 6 ++++-- drivers/scsi/scsi_transport_spi.c | 9 +++------ include/scsi/scsi_device.h | 1 + include/scsi/scsi_transport_spi.h | 1 - 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 8685704f6c8b..4d7411a7985f 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -268,8 +268,10 @@ int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, if (rq_flags & RQF_PM) blk_mq_req_flags |= BLK_MQ_REQ_PM; - rq_flags |= RQF_DV; - blk_mq_req_flags |= BLK_MQ_REQ_DV; + if (scsi_target(sdev)->spi_dv_context == current) { + rq_flags |= RQF_DV; + blk_mq_req_flags |= BLK_MQ_REQ_DV; + } req = blk_get_request(sdev->request_queue, data_direction == DMA_TO_DEVICE ? REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN, blk_mq_req_flags); diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c index 2ca150b16764..bf6b18768e79 100644 --- a/drivers/scsi/scsi_transport_spi.c +++ b/drivers/scsi/scsi_transport_spi.c @@ -66,7 +66,6 @@ static struct { }; /* Private data accessors (keep these out of the header file) */ -#define spi_dv_in_progress(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_in_progress) #define spi_dv_mutex(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_mutex) struct spi_internal { @@ -268,7 +267,6 @@ static int spi_setup_transport_attrs(struct transport_container *tc, spi_pcomp_en(starget) = 0; spi_hold_mcs(starget) = 0; spi_dv_pending(starget) = 0; - spi_dv_in_progress(starget) = 0; spi_initial_dv(starget) = 0; mutex_init(&spi_dv_mutex(starget)); @@ -1018,14 +1016,12 @@ spi_dv_device(struct scsi_device *sdev) */ lock_system_sleep(); - if (unlikely(spi_dv_in_progress(starget))) + if (unlikely(starget->spi_dv_context)) goto unlock; if (unlikely(scsi_device_get(sdev))) goto unlock; - spi_dv_in_progress(starget) = 1; - buffer = kzalloc(len, GFP_KERNEL); if (unlikely(!buffer)) @@ -1043,7 +1039,9 @@ spi_dv_device(struct scsi_device *sdev) starget_printk(KERN_INFO, starget, "Beginning Domain Validation\n"); + starget->spi_dv_context = current; spi_dv_device_internal(sdev, buffer); + starget->spi_dv_context = NULL; starget_printk(KERN_INFO, starget, "Ending Domain Validation\n"); @@ -1057,7 +1055,6 @@ spi_dv_device(struct scsi_device *sdev) out_free: kfree(buffer); out_put: - spi_dv_in_progress(starget) = 0; scsi_device_put(sdev); unlock: unlock_system_sleep(); diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index 202f4d6a4342..440834f4252e 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -310,6 +310,7 @@ struct scsi_target { char scsi_level; enum scsi_target_state state; + struct task_struct *spi_dv_context; void *hostdata; /* available to low-level driver */ unsigned long starget_data[0]; /* for the transport */ /* starget_data must be the last element!!!! */ diff --git a/include/scsi/scsi_transport_spi.h b/include/scsi/scsi_transport_spi.h index a4fa52b4d5c5..36934ac0a5ca 100644 --- a/include/scsi/scsi_transport_spi.h +++ b/include/scsi/scsi_transport_spi.h @@ -56,7 +56,6 @@ struct spi_transport_attrs { unsigned int support_qas; /* supports quick arbitration and selection */ /* Private Fields */ unsigned int dv_pending:1; /* Internal flag: DV Requested */ - unsigned int dv_in_progress:1; /* Internal: DV started */ struct mutex dv_mutex; /* semaphore to serialise dv */ };