From nobody Fri May 17 03:39:38 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=suse.com) ARC-Seal: i=2; a=rsa-sha256; t=1592389961; cv=pass; d=zohomail.com; s=zohoarc; b=ZFrUDOFXV5R4EjyhAZop88a8lbCvSg0+IgBzvR65xPR4nmxNCXCUeEh+kbL2RsRDyPy2wbhTkGo6hmPzlhZafjbwRE+fhHNO3vggE+pZ01NlLgEkq+OANjnKbCGxbyrzqd1Kw9+lXuuyaz1/44Jr7eAoTbF9TGkoMnI4T0G7H3Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592389961; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LjgdY45G2B/P1e9HyyJEIYGlVAq8rMncFu9MNoqpXrg=; b=SGg+yZlWP/HVaua4zMrcvUib6hTUXZek9+/uzYp6/SsOM2HSWURv00KPR170/dJ8SQtjYhwPP+5iN/3GIsWoN1Ut//dsTZ46tmYQaWs/vbR09Y12b5sxz9LeYi0JCnw3v0WYDbSQXx7v4nA+scJdYytsx/VJY63y7OpLhNluAJU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=suse.com) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1592389960952379.4672923780515; Wed, 17 Jun 2020 03:32:40 -0700 (PDT) Received: from localhost ([::1]:41590 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jlVN1-00030K-Ez for importer@patchew.org; Wed, 17 Jun 2020 06:32:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55784) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jlVLt-0002Ao-SU for qemu-devel@nongnu.org; Wed, 17 Jun 2020 06:31:29 -0400 Received: from mail-vi1eur05on2061.outbound.protection.outlook.com ([40.107.21.61]:46817 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jlVLl-0008PW-M8 for qemu-devel@nongnu.org; Wed, 17 Jun 2020 06:31:29 -0400 Received: from AM6PR04MB5782.eurprd04.prod.outlook.com (2603:10a6:20b:aa::17) by AM6PR04MB5815.eurprd04.prod.outlook.com (2603:10a6:20b:b0::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Wed, 17 Jun 2020 10:30:46 +0000 Received: from AM6PR04MB5782.eurprd04.prod.outlook.com ([fe80::d848:9dea:7742:a55]) by AM6PR04MB5782.eurprd04.prod.outlook.com ([fe80::d848:9dea:7742:a55%4]) with mapi id 15.20.3088.029; Wed, 17 Jun 2020 10:30:46 +0000 Received: from localhost.localdomain (114.255.249.163) by HK0PR03CA0107.apcprd03.prod.outlook.com (2603:1096:203:b0::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21 via Frontend Transport; Wed, 17 Jun 2020 10:30:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KKYaRjtDXbGNBCNKb8o0zTrv1IFm7nxhxT8tv5h1MzwjGZEB7hfcfSmPAJyqznUaLeVxTMb9ZqVs86ed4C9uDHi9AL1NYd/seNwwzT8b1RFxh9mE2UT3U5wAb/ietyjDUixMyioedCAWxjwI6DSnqIe0EuZIfa+kVR8sNa309fSlr0/xtWbvvAD/d2DhSyvUOhaCVfX0BRLXw16ofE7u/8kfPnd18mge7Ru3qm8Gd9/ZVO/oTQXkBsnaatSRd1PqZYUVfNQ2N7KOnw6vSlH5LjSEwWxQAe0elu8cNf0JSaTkvfOlAWiZDYZgmlOPyRJsJtsH0l3r4ppaPB+Ef9Cf2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LjgdY45G2B/P1e9HyyJEIYGlVAq8rMncFu9MNoqpXrg=; b=KYETjBk7MfSXJnO6iyg/0bJD0OeMUxp9YFa2BsmRBV4zSIvGQp12ceTMu8fUhwuKDvaYmgmvHSdd7gDrRG2NdDTCs4+wbgD8Vjv4BNnOcTn5hpBNP+eaIQwyHvFLG9jT6kDqriPRaodYjQB08jeMLA2HoIsLCLbM8kXkembwYp87OhZ3bl0kAou2jQTzMIkjZeNWsG0WeHzNZ2cu6kT0KYfQcBnc7Apn0TMaUsOKIn5Xsk3yvYu8hP37mLfOwgb431PyaW0OKBzkAflu0nVCt8LB54n97bQDIBUXmMrSD/uRUqHdpkkvjjmUozzVEgOZcGDqY+vY28kmLOicokKZvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mysuse.onmicrosoft.com; s=selector1-mysuse-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LjgdY45G2B/P1e9HyyJEIYGlVAq8rMncFu9MNoqpXrg=; b=LJYGddGaa1zTqo4GhU8JfcrAzWDMOC5u6stRAY5VlYrBT9mKW/3hIThSgVtagNC7M+S6dk09phsUFTG7TZpV8yJ65y8PXabeajmL13lRhX9Rriod6ku3ESTw6X/vAsPpG57L0K2IOSYt3p/bNcsAuxaaDmtrkPKTqwmnkqdsSSn72wbIuKt4Q5YMnnm7LGAUFooqOJboVqLWWgqy+KxEocgSEuIfzA9uP+6IOLQC+2QufZtjXDGZrIs3D+Rp+MZLOofY0gQtvE5BogbyKwmw7iRI6BEiqiRpzJR8IspBo3g/JxBDbJk0+NEwuF54yHG9GoUNZGE+V5odd4sDF4za+Q== Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=suse.com; From: Lin Ma To: qemu-devel@nongnu.org Subject: [PATCH v2 1/3] block: Add bdrv_co_get_lba_status Date: Wed, 17 Jun 2020 18:30:16 +0800 Message-Id: <20200617103018.18026-2-lma@suse.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200617103018.18026-1-lma@suse.com> References: <20200617103018.18026-1-lma@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0107.apcprd03.prod.outlook.com (2603:1096:203:b0::23) To AM6PR04MB5782.eurprd04.prod.outlook.com (2603:10a6:20b:aa::17) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-Mailer: git-send-email 2.26.0 X-Originating-IP: [114.255.249.163] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ef252621-e298-4ea9-1d8d-08d812a97f2a X-MS-TrafficTypeDiagnostic: AM6PR04MB5815: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:813; X-Forefront-PRVS: 04371797A5 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Kxa3IPvo3B6BWiu1RlsveUJN5Kz6zBPcSy+TiRb8Zo5RFu/54SFjVfcZIVGwu1b4m5fTZGxoOu79dv2NuzTx+tfvqmKwOhv7ZJY2fyZTJIDZrJwXTbE0IIPOTIpbA9/RSMkpHIx2f5rIo4UBmCghbGQNAVYXnosuz50Tslo8rjuoLvI+8wtPwnlH3aRmFq7uD5hAc7PP7Zwk55uwcHagyqbdOVYxM+dsVfhesrWg4lnkeAtWSQ8EKQt1y2sFnyg4n/o2oJjxGzX2/Ez7+zDiGT5TWTy0wdlVTKsyCkchEFzMs+flCCyao83nXEuANRF1/UOU84h/sRreXq79Q042f8+w9VGPQhO7IZGBt22OeiU+VHpq1RxxybQ5Sp2n3Pv4 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB5782.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(136003)(376002)(366004)(346002)(396003)(39860400002)(5660300002)(52116002)(6916009)(66556008)(478600001)(6486002)(8936002)(26005)(8676002)(2906002)(66476007)(66946007)(6506007)(4326008)(316002)(36756003)(6666004)(6512007)(86362001)(107886003)(2616005)(956004)(186003)(1076003)(16526019)(83380400001)(69590400007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: G5/d8bOJElZyxMaTdnF3Nc/rRHuH1mXC+BcR9aKSaQbF6Y/YWe+7NoZFbTLIMgM4Alvq2qcsV5ojAQhAMssCWXDmbjKlxCqA3hz6SrqNM5PCtQ6sS0bgVNRAJ6t4nD+PAd6wZQBw+AnEFnV6KgPeMeHuATLykKC8KSbr91VItNp1NM8BQ4roD0MinR3uFv3WvLkPjVGjMtWcVYh3tA0JqaHK7n0z7Nen7hJJseOJgFqhbYbHkMEy7AypFOYvDj5APsX8e3/I2dGr+NPtSm/wPe7Aw39Z5TnchYO9G1gLfn2wHuCMHgBfeFpUl3euXlU8CdkGiWnD02Wv5DUfXILTdiniP5tMQCltctQaxNyjVk7dwEUbhbF6C2F0/XKSAVxZoDsWLD+OYZnk6mWVcSaLW1Pe5YT7KZMQsaPAaFCzemW8G7b9ZMkbKOdj7flAVZviW8kohb3+usPm7g+qF6ugnfeIuuzyqj8PMkLcgqquHYs= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef252621-e298-4ea9-1d8d-08d812a97f2a X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jun 2020 10:30:46.6853 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gNdW1kO7VpzpX+IDcP1PpGeTA1Eq89RLaosK+hV6UXvMsU8OsqtDl5xpGVmffTXt X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5815 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.61; envelope-from=LMa@suse.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/17 06:31:19 X-ACL-Warn: Detected OS = Windows NT kernel [generic] [fuzzy] X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: fam@euphon.net, kwolf@redhat.com, mreitz@redhat.com, stefanha@redhat.com, Lin Ma , pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @mysuse.onmicrosoft.com) Content-Type: text/plain; charset="utf-8" The get lba status wrapper based on the bdrv_block_status. The following patches will add GET LBA STATUS 16 support for scsi emulation layer. Signed-off-by: Lin Ma --- block/io.c | 43 +++++++++++++++++++++++++++++++++++++++ include/block/block_int.h | 5 +++++ 2 files changed, 48 insertions(+) diff --git a/block/io.c b/block/io.c index df8f2a98d4..2064016b19 100644 --- a/block/io.c +++ b/block/io.c @@ -2208,6 +2208,49 @@ int coroutine_fn bdrv_co_pwrite_zeroes(BdrvChild *ch= ild, int64_t offset, BDRV_REQ_ZERO_WRITE | flags); } =20 +int coroutine_fn +bdrv_co_get_lba_status(BdrvChild *child, int64_t offset, int64_t bytes, + uint32_t *num_blocks, uint32_t *is_deallocated) +{ + BlockDriverState *bs =3D child->bs; + int ret =3D 0; + int64_t target_size, count =3D 0; + bool first =3D true; + uint8_t wanted_bit1 =3D 0; + + target_size =3D bdrv_getlength(bs); + if (target_size < 0) { + return -EIO; + } + + if (offset < 0 || bytes < 0) { + return -EIO; + } + + for ( ; offset <=3D target_size - bytes; offset +=3D count) { + ret =3D bdrv_block_status(bs, offset, bytes, &count, NULL, NULL); + if (ret < 0) { + goto out; + } + if (first) { + if (ret & BDRV_BLOCK_ZERO) { + wanted_bit1 =3D BDRV_BLOCK_ZERO >> 1; + *is_deallocated =3D 1; + } else { + wanted_bit1 =3D 0; + } + first =3D false; + } + if ((ret & BDRV_BLOCK_ZERO) >> 1 =3D=3D wanted_bit1) { + (*num_blocks)++; + } else { + break; + } + } +out: + return ret; +} + /* * Flush ALL BDSes regardless of if they are reachable via a BlkBackend or= not. */ diff --git a/include/block/block_int.h b/include/block/block_int.h index 791de6a59c..43f90591b9 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -1296,6 +1296,11 @@ int coroutine_fn bdrv_co_block_status_from_backing(B= lockDriverState *bs, int64_t *pnum, int64_t *map, BlockDriverState **file= ); +int coroutine_fn bdrv_co_get_lba_status(BdrvChild *child, + int64_t offset, + int64_t bytes, + uint32_t *num_blocks, + uint32_t *is_deallocated); const char *bdrv_get_parent_name(const BlockDriverState *bs); void blk_dev_change_media_cb(BlockBackend *blk, bool load, Error **errp); bool blk_dev_has_removable_media(BlockBackend *blk); --=20 2.26.0 From nobody Fri May 17 03:39:38 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=suse.com) ARC-Seal: i=2; a=rsa-sha256; t=1592389962; cv=pass; d=zohomail.com; s=zohoarc; b=cpHtliu4ThYwPsAmiNpGKuiijVXwrYEMhGXnJpdiWyNymYaH1SKhCB5riP4YHCPwrD6zk2GIIsQNyD9GoQdvOtZ51HjCPy7YwscahpawVbrG1L9V3RMPDz8M5jFIf2JoClNA2csh2PdoWXN0nRx5boH6XYZ1DMYSd/JkGGaAH/8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592389962; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=w7gMfFneSO/Ae8TX5Q3DAdZgAzg15N6pZkYHdPwFk3Y=; b=Btx//YWGu4+lFkbh76HDOLVYzpy9Pqfmuc/EwJ0kt7Omkh8RtaIdrG5JYKJ4VywgCZzeBZfHOA6NCIz5f+d81ci0ZAlnuN5VeZfihtp4xflqcRhQpA3gBpno3WCd3QfOEL7LZMNOn5dzHIYXprpfSF/5EKpJLbFthY74r6s85eE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=suse.com) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1592389962441187.26904762523793; Wed, 17 Jun 2020 03:32:42 -0700 (PDT) Received: from localhost ([::1]:41648 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jlVN3-00031o-30 for importer@patchew.org; Wed, 17 Jun 2020 06:32:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55806) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jlVLw-0002BW-Te for qemu-devel@nongnu.org; Wed, 17 Jun 2020 06:31:32 -0400 Received: from mail-vi1eur05on2061.outbound.protection.outlook.com ([40.107.21.61]:46817 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jlVLu-0008PW-6q for qemu-devel@nongnu.org; Wed, 17 Jun 2020 06:31:32 -0400 Received: from AM6PR04MB5782.eurprd04.prod.outlook.com (2603:10a6:20b:aa::17) by AM6PR04MB5815.eurprd04.prod.outlook.com (2603:10a6:20b:b0::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Wed, 17 Jun 2020 10:30:49 +0000 Received: from AM6PR04MB5782.eurprd04.prod.outlook.com ([fe80::d848:9dea:7742:a55]) by AM6PR04MB5782.eurprd04.prod.outlook.com ([fe80::d848:9dea:7742:a55%4]) with mapi id 15.20.3088.029; Wed, 17 Jun 2020 10:30:49 +0000 Received: from localhost.localdomain (114.255.249.163) by HK0PR03CA0107.apcprd03.prod.outlook.com (2603:1096:203:b0::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21 via Frontend Transport; Wed, 17 Jun 2020 10:30:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BWmpHCFpOsYLNcuqCSrW5U4Acrd3I1R60WClWiEdL4GOZnJm45JRQF/fOR1+avvmc6al3LzvGV+aNsy/jrdDLDvcnK8gF7LoTC+yz29iOMHxG1eazof3knMI1/tuGnKuurV/Q+jXdslHfLg1aZV0yuHe+gAuin0QBRnEwEHNvJbp3fgvPvn681IrRy9SDknqP7L/9jtfaOyHxdpyLP3quIXhAp25oTBLx/BDrCJcyW4XeG9mobWoLrMmGmY/OQurh0byYOG5zwLU6XnYOHe6/ar2/arybfati8xRDIKKGJ3loM12wfyNtvntbGi426BTpleqcd/BIW18xhb9NhLoTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w7gMfFneSO/Ae8TX5Q3DAdZgAzg15N6pZkYHdPwFk3Y=; b=lX9VRsWHQdiBYMlNucoaLCEqskwD0YbK/WM/Y5+9IBmNR03gCqivbK2GlXS3s5UIQGBCOjC9OZAi3fOrOav2j0LMnds8ffsG3Cl77K55x0fcUrdiy1/AusLSVRvxIw/7SedWaXe5wxbiWiyiknk8tEFMBbFD6ITn8L0wlaeDnTlSkZ44vYObcG/dZ2wrmyjW1bHA3fZuCDzszEQYeem2S951J5sNGxShrpyd4GwtWYYBSkC7XHAExJrcNzavVZrpstjGgZHhcZTjKXEMOb/n+UC8IxObEaICamEwWixJfSTea4BBv9/75CJmBfvLvQGV0RMj9hcd56f9+vp2dUb7aA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mysuse.onmicrosoft.com; s=selector1-mysuse-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w7gMfFneSO/Ae8TX5Q3DAdZgAzg15N6pZkYHdPwFk3Y=; b=e4t7aQUQygR+xLWZoLdvvlpm7f+cSoXoZkBAE0HTs6X7oq4OXrIeUCr4bzK/Y8S2aoPBP6m0C8qgVmhxC7q1vqcozmBdzgKB3ZrT1gPMlMSbBfeGADKop8f1DL825grA7+FsiWnWXiuU6YRXpKRLeNx0hwL0VNA0wk/ZSCEqtYc+D7gC64KJ9CwTDCH8C433O/Z4rsV5/K5jY91diM1I1pCEEh/SQCM5EQy5pJxFnT8Z9KhWSpwQ2VLHW6ZNRmw9YTPWVDmu6lfpKXos7u0dE+/U+zdud9EJ0ubW/9y1dpKq4GUDxCr9tFBseppeW5AU3WhwahoVpBH/aSpfH44cNA== Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=suse.com; From: Lin Ma To: qemu-devel@nongnu.org Subject: [PATCH v2 2/3] block: Add GET LBA STATUS support Date: Wed, 17 Jun 2020 18:30:17 +0800 Message-Id: <20200617103018.18026-3-lma@suse.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200617103018.18026-1-lma@suse.com> References: <20200617103018.18026-1-lma@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0107.apcprd03.prod.outlook.com (2603:1096:203:b0::23) To AM6PR04MB5782.eurprd04.prod.outlook.com (2603:10a6:20b:aa::17) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-Mailer: git-send-email 2.26.0 X-Originating-IP: [114.255.249.163] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ea1e02a8-c9b0-4eef-c52c-08d812a980b6 X-MS-TrafficTypeDiagnostic: AM6PR04MB5815: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1002; X-Forefront-PRVS: 04371797A5 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: i5tomDSBSqXaT/V/8+oWoXuhY00Ato7mC6jYgOP91HI9B7D9U7GsUhWhlLn4QbdA4cFuZ7jRDG3QzLUiHAw60edEQTx6+2bfTDr5OBk/eVF8x1hLWzZeIZKc4AinizpyR16okYOnHlS0JDCO1+sdAEvnoIVXnpjiVbm2NMTa9BjJ4unECAV+c9DJQyCAXIpd5qFKiisfbe7x7AcipW92QnvC40EKLoUzwCNafCQ5bqxKT0J/BF8pbm5pFZyaLCynB46ac55nd2QWy1IZMzMaMUFZTKJtrM18xlm2ESWinYCULCipkksGb2AbF3UWW56ZSl0/EgI4mjY4dpi4ZPK7Ob5QrL41mEdEfvyZO6CoFi30dXoFLI9fUk7KLDhwUR+t X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB5782.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(136003)(376002)(366004)(346002)(396003)(39860400002)(5660300002)(52116002)(6916009)(66556008)(478600001)(6486002)(8936002)(26005)(8676002)(2906002)(66476007)(66946007)(6506007)(4326008)(316002)(36756003)(6666004)(6512007)(86362001)(107886003)(2616005)(956004)(186003)(1076003)(16526019)(83380400001)(69590400007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: xZI2XIzp84Q2W4ixr16zH/Uaaquu+GAzSsuIYjpzwhXF7Dsa65c0LLrnRKDSmxFfP2X7IrbREvtQt5gWIs+/8uNBDUjGLsSST8+zN2NHIwMGhzOULefGjLSo8c7rDU5+boRG0pYIzYnRghWqtNFUpceNlNAtr6pizpWaS/FMCIw4LMivuLh8jRtA0ORkQMZ0QgCgr5i3MblExzeKtU69xBGhjOB9b/uzwZqDK964zjO7D/gb01NBpixgYzXyWoyjPLF1xmT21KKZNP4buxzZ8wCtrKH/zerIUuCcAm6sIqvO79LID8GP99D8Q5oop28M+Q6hIgx3kuGfmlP0VvZJin2SBVS9l+FGH1nT69js2WBXwscDl3Z6jeghO0Dg7ltecrpB/YzXnQFnmHNrTXeIC7Sa6LLRGvG85lpS8b1W0MgOe60rPfgXJBLu2nzjwJvLZb+yFtkohX2zSivlFuLwbe62AX8dCKoA6UM6VJ6Doic= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea1e02a8-c9b0-4eef-c52c-08d812a980b6 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jun 2020 10:30:49.4228 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 00Yl6TCCPtQ2Rlr3ql3Ll5nbKXGMVq4H62aD8GSJxHTyMcuTnmaT8smW6iSS/W9q X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5815 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.61; envelope-from=LMa@suse.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/17 06:31:19 X-ACL-Warn: Detected OS = Windows NT kernel [generic] [fuzzy] X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: fam@euphon.net, kwolf@redhat.com, mreitz@redhat.com, stefanha@redhat.com, Lin Ma , pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @mysuse.onmicrosoft.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Lin Ma --- block/block-backend.c | 38 ++++++++++++++++++++++++++++++++++ include/sysemu/block-backend.h | 2 ++ 2 files changed, 40 insertions(+) diff --git a/block/block-backend.c b/block/block-backend.c index 6936b25c83..6d08dd5e0d 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1650,6 +1650,44 @@ int blk_pdiscard(BlockBackend *blk, int64_t offset, = int bytes) return blk_prw(blk, offset, NULL, bytes, blk_pdiscard_entry, 0); } =20 +static int coroutine_fn +blk_do_get_lba_status(BlockBackend *blk, int64_t offset, int bytes, + uint32_t *num_blocks, uint32_t *is_deallocated) +{ + int ret; + + blk_wait_while_drained(blk); + + ret =3D blk_check_byte_request(blk, offset, bytes); + if (ret < 0) { + return ret; + } + + return bdrv_co_get_lba_status(blk->root, offset, bytes, num_blocks, + is_deallocated); +} + +static void blk_aio_get_lba_status_entry(void *opaque) +{ + BlkAioEmAIOCB *acb =3D opaque; + BlkRwCo *rwco =3D &acb->rwco; + + void *data =3D acb->common.opaque; + uint32_t *num_blocks =3D (uint32_t *)data; + uint32_t *is_deallocated =3D (uint32_t *)(data + sizeof(uint32_t)); + + rwco->ret =3D blk_do_get_lba_status(rwco->blk, rwco->offset, acb->byte= s, + num_blocks, is_deallocated); + blk_aio_complete(acb); +} + +BlockAIOCB *blk_aio_get_lba_status(BlockBackend *blk, int64_t offset, int = bytes, + BlockCompletionFunc *cb, void *opaque) +{ + return blk_aio_prwv(blk, offset, bytes, NULL, blk_aio_get_lba_status_e= ntry, + 0, cb, opaque); +} + /* To be called between exactly one pair of blk_inc/dec_in_flight() */ static int coroutine_fn blk_do_flush(BlockBackend *blk) { diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h index 8203d7f6f9..cd527ec0c9 100644 --- a/include/sysemu/block-backend.h +++ b/include/sysemu/block-backend.h @@ -171,6 +171,8 @@ BlockAIOCB *blk_aio_flush(BlockBackend *blk, BlockCompletionFunc *cb, void *opaque); BlockAIOCB *blk_aio_pdiscard(BlockBackend *blk, int64_t offset, int bytes, BlockCompletionFunc *cb, void *opaque); +BlockAIOCB *blk_aio_get_lba_status(BlockBackend *blk, int64_t offset, int = bytes, + BlockCompletionFunc *cb, void *opaque); void blk_aio_cancel(BlockAIOCB *acb); void blk_aio_cancel_async(BlockAIOCB *acb); int blk_ioctl(BlockBackend *blk, unsigned long int req, void *buf); --=20 2.26.0 From nobody Fri May 17 03:39:38 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=suse.com) ARC-Seal: i=2; a=rsa-sha256; t=1592390089; cv=pass; d=zohomail.com; s=zohoarc; b=fd2kuUfFL6JthV6nK2tRDVzDmAQCDYjG8O7WCkMq7xu98HHmy+igIgPqE/OndkUt36ezKtjyZ/Bhq/Kyfh0rX+vi3KwDqoPC6dKtubCIqcwzU8YEhpPryVxkJGzYewopMzRbqGSiX6jlictTO64JssH8rKDeSsOB7u6nCkI5Bv0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592390089; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nUKfX9FVfthy2w7tRAPEyZ1a9rIxVPHgzXPclsOOFbo=; b=DzSxy4pba6RTL1gDsNeK+ffBkFB4y22wjbh3xyGlkyR8evcDNYdvEJDouraz5uzJAiWqhuTE0mn/6aWECrUw+aSS9bph0eYEA+M3r4nxw3ovcTtW5m/CGnysJDOgaaTyHHWBjx+xZwZ+o9ISki65zujf4AxK4x00e1SizK8t7/k= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=suse.com) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1592390089497694.5427463483418; Wed, 17 Jun 2020 03:34:49 -0700 (PDT) Received: from localhost ([::1]:47190 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jlVP6-0005kv-5j for importer@patchew.org; Wed, 17 Jun 2020 06:34:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55820) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jlVLz-0002Dc-9i for qemu-devel@nongnu.org; Wed, 17 Jun 2020 06:31:35 -0400 Received: from mail-vi1eur05on2061.outbound.protection.outlook.com ([40.107.21.61]:46817 helo=EUR05-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jlVLx-0008PW-90 for qemu-devel@nongnu.org; Wed, 17 Jun 2020 06:31:35 -0400 Received: from AM6PR04MB5782.eurprd04.prod.outlook.com (2603:10a6:20b:aa::17) by AM6PR04MB5815.eurprd04.prod.outlook.com (2603:10a6:20b:b0::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Wed, 17 Jun 2020 10:30:52 +0000 Received: from AM6PR04MB5782.eurprd04.prod.outlook.com ([fe80::d848:9dea:7742:a55]) by AM6PR04MB5782.eurprd04.prod.outlook.com ([fe80::d848:9dea:7742:a55%4]) with mapi id 15.20.3088.029; Wed, 17 Jun 2020 10:30:52 +0000 Received: from localhost.localdomain (114.255.249.163) by HK0PR03CA0107.apcprd03.prod.outlook.com (2603:1096:203:b0::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21 via Frontend Transport; Wed, 17 Jun 2020 10:30:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ml9iElFlPUml3cXZEI3bmHyltNnjKiyuJib1kVwOkG78AyzNoE8KEK+vTA5OK4yDZ4PwHc9D3RZL4txdOcAgQHZ2fAi6b10LmqPsnW9yoT5XFfsbaxdyM4m+amrR2/4gpqeacxXC3yt9Yfv++jmiVTzUb7WmLSgOH2WOYKApGEFJIyyja1WLrAuFRMDlUbWMUcnTCJQVqEFm+Uw1lSqQfTZg8O23xVthPIOidu5BpbWSYOu/0M87YzwS4XF47lhEZmpuDTOcE29PaWKJAtQRUFjSvmCWTtJxwa+iGIxVn0nL8a2m5dKcGkKPNIUtM3fcK8g+smh76ZL2AdNLKuJCbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nUKfX9FVfthy2w7tRAPEyZ1a9rIxVPHgzXPclsOOFbo=; b=nGXlrZZhVQNKYCgRVXI3hrHyW8eXed+AjHyA1YMzv1zZXVFGEQbPCWAyfeXwBOcFNDriZdxnet523F8KqTGzfmrzpjQvfHQqnziBKBu+pyZHCkKz76sa47wNhUNMFkceicobD63IWCDRuGuq9/S8xE71uRm8Gg5cLpmFf1t/3XCfq9I6PHsHhSEQlmfJ6+2F8pMid+nFo1nX9epjRZWn0/hiRgkRaKlS/Xhz5mhdPONxBL3Wn3Q8SZJp0s4PoAhNBTnWEiLCs8MaCDeZeIyptPMihz2KwnE2saUY1FhYJhuk9RBKvRprWX9lFuUbKbt5i0lt8u6Gc/ysEgS1gRLLlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mysuse.onmicrosoft.com; s=selector1-mysuse-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nUKfX9FVfthy2w7tRAPEyZ1a9rIxVPHgzXPclsOOFbo=; b=VquGpf8eKu9bCX96WolpitU6Mym6aMoIKw657jF2QCEosDD6QQK9yW+BXpYRXcMqwPEz1a+wgSjVFCLAGttc6FIjMFPLyrAK2SoRTPSO0Pup7b0MRlfZt9dxN3ajttAO8aWK4nBgkaJ8cCZ5dWVZU29vW4dyLidSM83bSw7lpzEWdS8MuXC2RefiJzp3NZnoXvsvcSoFEFzpqLeKHvslyQyLnp/Ly6hXrs6MWcGps8yx3jzQGYhrT1HM9hkTm8Gyaf7p8mBWdBbxKyfEnUt4+TAO7cz4wOpHgRw4mWB/T27uEc9CLtjZZUvWEAblB/dyyO1X5/aeOImIOb0zJEFlhw== Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=suse.com; From: Lin Ma To: qemu-devel@nongnu.org Subject: [PATCH v2 3/3] scsi-disk: Add support for the GET LBA STATUS 16 command Date: Wed, 17 Jun 2020 18:30:18 +0800 Message-Id: <20200617103018.18026-4-lma@suse.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200617103018.18026-1-lma@suse.com> References: <20200617103018.18026-1-lma@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0107.apcprd03.prod.outlook.com (2603:1096:203:b0::23) To AM6PR04MB5782.eurprd04.prod.outlook.com (2603:10a6:20b:aa::17) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-Mailer: git-send-email 2.26.0 X-Originating-IP: [114.255.249.163] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6865d581-2e01-41ae-7863-08d812a98258 X-MS-TrafficTypeDiagnostic: AM6PR04MB5815: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:156; X-Forefront-PRVS: 04371797A5 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rqTie2uj2B0EBnQHYlWSIZV0u4J6/N1zJE9ILbq/1yLwrxiK0j8Yi6rLPhEGfhUa2D7OzwcUZ2QiOytUVWqY5KQsLF7twthFLXsJ7rhhDvoqWmpNV60/pf9ThNzdL+14/MOYhuzUhG/gu1dyzrXIcZrXxex3QSUfOh6nyT9CoxsWSsZi6RDjzU4wpq35ISXnyZ1Y+L29gfTQW/zYb5SOQ6u53KYkr5lY1LUbSvbG21kRbrncH9kWQapozTFidPjkVMBuVS1aguT6TfGpThIiyBDj6bVhmk0RColyjvdj6WOxy8jgKkuwGmXHdHHHCvrARO+swFTvhCbWILPKVk3cRh3cL0jOJ1LieFN1Ci6daElxS/6JEn8End9RFraklDSS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB5782.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(136003)(376002)(366004)(346002)(396003)(39860400002)(5660300002)(52116002)(6916009)(66556008)(478600001)(6486002)(8936002)(26005)(8676002)(2906002)(66476007)(66946007)(6506007)(4326008)(316002)(36756003)(6666004)(6512007)(86362001)(107886003)(2616005)(956004)(186003)(1076003)(16526019)(83380400001)(69590400007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: Xa42W8n0rOjYWBG7WlX7dRxhAlJXnEkQzp/Kx4PLc48HKL9rENX79OVk+cuLaxu0UWKUTz6X3PQOD4KH91Kvk8fL5urzYl+SrZur3szGfakmZVPJdoy/5gXN/s7OlS9Fx7gJtCBSIzB6rVxb0KoBZywLGXZkbvf7U+FY9IzUdSvSSXlr6TyScRNWDE4u69pBi2gM8FoVm8oXN5bnCBtEwd9+NQxM6sbJAzHw1SZM5Do276GPQOa2bNJ8NjLFNKQ5749uwIM9BZCjEGoKM5+uvJ4iHjhglsIKVVVC1t+smKPU1rlQtTtwwOQRNPa0AZvIaJa/wVN9o4/LuEk5v8J5T3WQ6Lv/GzsJyz55EYoGvj51Cn4qSLHfIksu3MvhjrjXF1/6+I28LAxSRtvOrEZUqdpHcCnvul/Keag2sZNmwGvVLL1rDFAB/kV0eRUOTf1On9oAAJMxWiaxIHVZLGHfvWaVZAB9tfPM9M8kR9Hjsmo= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6865d581-2e01-41ae-7863-08d812a98258 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jun 2020 10:30:51.9703 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4UqeLKzzLWYMj0923od1u5YkavHC4i5pf6buKaaH7MTKlWF7GecrA38lyl+7svUu X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5815 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.21.61; envelope-from=LMa@suse.com; helo=EUR05-VI1-obe.outbound.protection.outlook.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/17 06:31:19 X-ACL-Warn: Detected OS = Windows NT kernel [generic] [fuzzy] X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: fam@euphon.net, kwolf@redhat.com, mreitz@redhat.com, stefanha@redhat.com, Lin Ma , pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @mysuse.onmicrosoft.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Lin Ma --- hw/scsi/scsi-disk.c | 90 ++++++++++++++++++++++++++++++++++++++ include/block/accounting.h | 1 + include/scsi/constants.h | 1 + 3 files changed, 92 insertions(+) diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 387503e11b..9e3002ddaf 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -1866,6 +1866,89 @@ static void scsi_disk_emulate_write_data(SCSIRequest= *req) } } =20 +typedef struct GetLbaStatusCBData { + uint32_t num_blocks; + uint32_t is_deallocated; + SCSIDiskReq *r; +} GetLbaStatusCBData; + +static void scsi_get_lba_status_complete(void *opaque, int ret); + +static void scsi_get_lba_status_complete_noio(GetLbaStatusCBData *data, in= t ret) +{ + SCSIDiskReq *r =3D data->r; + SCSIDiskState *s =3D DO_UPCAST(SCSIDiskState, qdev, r->req.dev); + + assert(r->req.aiocb =3D=3D NULL); + + block_acct_start(blk_get_stats(s->qdev.conf.blk), &r->acct, + s->qdev.blocksize, BLOCK_ACCT_GET_LBA_STATUS); + + r->req.aiocb =3D blk_aio_get_lba_status(s->qdev.conf.blk, + r->req.cmd.lba * s->qdev.blocksi= ze, + s->qdev.blocksize, + scsi_get_lba_status_complete, da= ta); +} + +static void scsi_get_lba_status_complete(void *opaque, int ret) +{ + GetLbaStatusCBData *data =3D opaque; + SCSIDiskReq *r =3D data->r; + SCSIDiskState *s =3D DO_UPCAST(SCSIDiskState, qdev, r->req.dev); + + assert(r->req.aiocb !=3D NULL); + r->req.aiocb =3D NULL; + + aio_context_acquire(blk_get_aio_context(s->qdev.conf.blk)); + if (scsi_disk_req_check_error(r, ret, true)) { + g_free(data); + goto done; + } + + block_acct_done(blk_get_stats(s->qdev.conf.blk), &r->acct); + scsi_req_unref(&r->req); + g_free(data); + +done: + aio_context_release(blk_get_aio_context(s->qdev.conf.blk)); +} + +static void scsi_disk_emulate_get_lba_status(SCSIRequest *req, uint8_t *ou= tbuf) +{ + SCSIDiskReq *r =3D DO_UPCAST(SCSIDiskReq, req, req); + GetLbaStatusCBData *data; + uint32_t *num_blocks; + uint32_t *is_deallocated; + + data =3D g_new0(GetLbaStatusCBData, 1); + data->r =3D r; + num_blocks =3D &(data->num_blocks); + is_deallocated =3D &(data->is_deallocated); + + scsi_req_ref(&r->req); + scsi_get_lba_status_complete_noio(data, 0); + + /* + * 8 + 16 is the length in bytes of response header and + * one LBA status descriptor + */ + memset(outbuf, 0, 8 + 16); + outbuf[3] =3D 20; + outbuf[8] =3D (req->cmd.lba >> 56) & 0xff; + outbuf[9] =3D (req->cmd.lba >> 48) & 0xff; + outbuf[10] =3D (req->cmd.lba >> 40) & 0xff; + outbuf[11] =3D (req->cmd.lba >> 32) & 0xff; + outbuf[12] =3D (req->cmd.lba >> 24) & 0xff; + outbuf[13] =3D (req->cmd.lba >> 16) & 0xff; + outbuf[14] =3D (req->cmd.lba >> 8) & 0xff; + outbuf[15] =3D req->cmd.lba & 0xff; + outbuf[16] =3D (*num_blocks >> 24) & 0xff; + outbuf[17] =3D (*num_blocks >> 16) & 0xff; + outbuf[18] =3D (*num_blocks >> 8) & 0xff; + outbuf[19] =3D *num_blocks & 0xff; + outbuf[20] =3D *is_deallocated ? 1 : 0; +} + static int32_t scsi_disk_emulate_command(SCSIRequest *req, uint8_t *buf) { SCSIDiskReq *r =3D DO_UPCAST(SCSIDiskReq, req, req); @@ -2076,6 +2159,13 @@ static int32_t scsi_disk_emulate_command(SCSIRequest= *req, uint8_t *buf) =20 /* Protection, exponent and lowest lba field left blank. */ break; + } else if ((req->cmd.buf[1] & 31) =3D=3D SAI_GET_LBA_STATUS) { + if (req->cmd.lba > s->qdev.max_lba) { + goto illegal_lba; + } + scsi_disk_emulate_get_lba_status(req, outbuf); + r->iov.iov_len =3D req->cmd.xfer; + return r->iov.iov_len; } trace_scsi_disk_emulate_command_SAI_unsupported(); goto illegal_request; diff --git a/include/block/accounting.h b/include/block/accounting.h index 878b4c3581..645014fb0b 100644 --- a/include/block/accounting.h +++ b/include/block/accounting.h @@ -38,6 +38,7 @@ enum BlockAcctType { BLOCK_ACCT_WRITE, BLOCK_ACCT_FLUSH, BLOCK_ACCT_UNMAP, + BLOCK_ACCT_GET_LBA_STATUS, BLOCK_MAX_IOTYPE, }; =20 diff --git a/include/scsi/constants.h b/include/scsi/constants.h index 874176019e..b18377b214 100644 --- a/include/scsi/constants.h +++ b/include/scsi/constants.h @@ -154,6 +154,7 @@ * SERVICE ACTION IN subcodes */ #define SAI_READ_CAPACITY_16 0x10 +#define SAI_GET_LBA_STATUS 0x12 =20 /* * READ POSITION service action codes --=20 2.26.0