From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543380; cv=none; d=zoho.com; s=zohoarc; b=TzuTWdiWqKdjt7Nnq+SdrzZRgvfUVH7K7arzusfbu9cqgJMccBZEeqsUFiXxECSe0njMZ8GkIKS3wOR1P48AY58tg+1CvEI2GFcc5gLYF9y56v1Wt/uKk5hKss71bXYoMtBgB2gI5jt8CTqIp0MSry4pTq7Fu6+Cw5kVBOKozZo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543380; h=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:ARC-Authentication-Results; bh=Qlyo3dCk5IgBiAF31m6kZYE7s+bKfa6dvhE/A9REX7I=; b=MGzXSct0rUdsUnNFopFOztkpVDpPvyUnebso1awHVnoQ6ZkRuAdWKGw9zQrKa4iRSKxD8TVEalr4dKZBfV4m8OxqkUOlVZnutMw5CdRA1CgHOtnbHjGB+jXQYgQ6CFKra1LjF3rAahLKLpApV6FVbkpXULr7UpCtwmB+L6nyxpw= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543380660152.46627055133672; Fri, 19 Jul 2019 06:36:20 -0700 (PDT) Received: from localhost ([::1]:45392 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3b-00033m-9y for importer@patchew.org; Fri, 19 Jul 2019 09:36:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37688) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3I-000252-Lj for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT3H-0007Z7-F2 for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:00 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:37754) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT3H-0007YV-7L; Fri, 19 Jul 2019 09:35:59 -0400 Received: by mail-pf1-x441.google.com with SMTP id 19so14206352pfa.4; Fri, 19 Jul 2019 06:35:59 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.35.49 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:35:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Qlyo3dCk5IgBiAF31m6kZYE7s+bKfa6dvhE/A9REX7I=; b=TIsxcVkZeqtSkRWuL76KqVWQ2Kc+iYDWhApUj2UD/1qBuI/T1NsIsElRbqio6kyew0 835nQ5q/QW2HX+29pXS3yPDGyOr2zXmrSzKE4dS8HhrI59jjPjxSG8dSnLXI0PezaVXq nr3Su6tM5Tx9VNHawmaAflak6h7UNVplrTyNtLTjtJc9uJp0y/rL5KOKbUHSE5yUb9uY 2mHex+gg5BDLbORTTijALCF1zIU65ueR9+qIHRCW6YL0bVYT9lZ1bCDArLTVOkXCdtSX V5yHvrQqWwNo3zpa/kYLT0S7mHnUocJ0QQsnZGuauzOsAw8Z8kVXMIp4aYnM8bDYmgoj ohbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Qlyo3dCk5IgBiAF31m6kZYE7s+bKfa6dvhE/A9REX7I=; b=DbAdsnJ56mQ9YECryiTKc8tOzcdZlOiPr0TbIhxV48vD6RJ4BeeRzv02/iX6Yw/GfN Ekeu6LLjiEymRchdmB1vGdBFX5REQDTfcTBn4FkWnVlFYdiBYslBnWF0N4egdzdTWh3D p69wZE9XXjxfpTYq6np225CNpXzyyJybkndintry9Zcd51jF6YF3bGmNVSE+GFd5jgFo 9fwMXHW1ymdD0eiFLodctgL/3yqrc+0X5n9GMpXh22r4gj6RTqjBF8H59aaJuuFdnfhR W44DgPcytsaCGLCr4jc2mCkXXxjmsMkGD0/B3efmfLC2zvRW+sTbs5Qtyl8/nzMbDDCU 6BNg== X-Gm-Message-State: APjAAAV8Sba34yx3GL/iZx/+UosxOX9EnhTVQFXyYB3emx7wpqd1upcm +Z6lr0FitUzFsn8xbzwQymwDn8FtdE0= X-Google-Smtp-Source: APXvYqzn/s3RzvAocfbh4IPpwtKiOlUZ29hLVvMX/B3aCKcwufexLOdJj6gCEmpdyeW/oFgxLu/sFw== X-Received: by 2002:a63:505a:: with SMTP id q26mr52764546pgl.18.1563543357747; Fri, 19 Jul 2019 06:35:57 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:17 +0530 Message-Id: <20190719133530.28688-2-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::441 Subject: [Qemu-devel] [PATCH v6 01/14] configure: permit use of io_uring 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta , Maxim Levitsky Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi Reviewed-by: Maxim Levitsky --- configure | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/configure b/configure index eb635c3b9a..b0e2e2158e 100755 --- a/configure +++ b/configure @@ -370,6 +370,7 @@ xen=3D"" xen_ctrl_version=3D"" xen_pci_passthrough=3D"" linux_aio=3D"" +linux_io_uring=3D"" cap_ng=3D"" attr=3D"" libattr=3D"" @@ -1271,6 +1272,10 @@ for opt do ;; --enable-linux-aio) linux_aio=3D"yes" ;; + --disable-linux-io-uring) linux_io_uring=3D"no" + ;; + --enable-linux-io-uring) linux_io_uring=3D"yes" + ;; --disable-attr) attr=3D"no" ;; --enable-attr) attr=3D"yes" @@ -1789,6 +1794,7 @@ disabled with --disable-FEATURE, default is enabled i= f available: vde support for vde network netmap support for netmap network linux-aio Linux AIO support + linux-io-uring Linux io_uring support cap-ng libcap-ng support attr attr and xattr support vhost-net vhost-net kernel acceleration support @@ -3969,6 +3975,21 @@ EOF linux_aio=3Dno fi fi +########################################## +# linux-io-uring probe + +if test "$linux_io_uring" !=3D "no" ; then + if $pkg_config liburing; then + linux_io_uring_cflags=3D$($pkg_config --cflags liburing) + linux_io_uring_libs=3D$($pkg_config --libs liburing) + linux_io_uring=3Dyes + else + if test "$linux_io_uring" =3D "yes" ; then + feature_not_found "linux io_uring" "Install liburing devel" + fi + linux_io_uring=3Dno + fi +fi =20 ########################################## # TPM emulation is only on POSIX @@ -6392,6 +6413,7 @@ echo "PIE $pie" echo "vde support $vde" echo "netmap support $netmap" echo "Linux AIO support $linux_aio" +echo "Linux io_uring support $linux_io_uring" echo "ATTR/XATTR support $attr" echo "Install blobs $blobs" echo "KVM support $kvm" @@ -6878,6 +6900,11 @@ fi if test "$linux_aio" =3D "yes" ; then echo "CONFIG_LINUX_AIO=3Dy" >> $config_host_mak fi +if test "$linux_io_uring" =3D "yes" ; then + echo "CONFIG_LINUX_IO_URING=3Dy" >> $config_host_mak + echo "LINUX_IO_URING_CFLAGS=3D$linux_io_uring_cflags" >> $config_host_mak + echo "LINUX_IO_URING_LIBS=3D$linux_io_uring_libs" >> $config_host_mak +fi if test "$attr" =3D "yes" ; then echo "CONFIG_ATTR=3Dy" >> $config_host_mak fi --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543395; cv=none; d=zoho.com; s=zohoarc; b=G7EmhTzluTswWExq+MWPeEsJht6mr2V7VKKWu6JHeY6F5FhLT7n0evlewctToD6bJO8i1lUvBs6/nuGfzsQ9mKU75V80Fphiz9J1lZc+L3AmGXKn+pMcJTZ0uvnMIoSnLsnGUpkkKNMCrzrC/UGhxjfy0HmZWBrwasfsocHdy1k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543395; h=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:ARC-Authentication-Results; bh=d/2bUWcNzFxcpnKI7+ugh8PRZBa+/iFU8UDy66IrG/E=; b=LN3bMrJjFbIzBbzR+EyvpcvnO5RTVhxvaQfGDecnl4/bfhvTozaqTAT1mk5M175N3dK8HvtPoVUHErjjTpT4XUupXoNDuQjBLcXdTg6D2D2pJZ7k+2RU/vwB4dj8rhn7NNJu3TbNIYVqk8vabDKC/BgZJpLoqnLjzk9ljajeU0Y= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156354339562917.912758346726946; Fri, 19 Jul 2019 06:36:35 -0700 (PDT) Received: from localhost ([::1]:45400 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3q-0003xS-5x for importer@patchew.org; Fri, 19 Jul 2019 09:36:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37747) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3P-0002ad-T0 for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT3O-0007cw-Rl for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:07 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:37376) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT3O-0007cU-MB; Fri, 19 Jul 2019 09:36:06 -0400 Received: by mail-pg1-x541.google.com with SMTP id i70so3745290pgd.4; Fri, 19 Jul 2019 06:36:06 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.35.58 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:36:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=d/2bUWcNzFxcpnKI7+ugh8PRZBa+/iFU8UDy66IrG/E=; b=j6p0JB2mIYzALaHGp+rXetNIKQbE+IUCYAwyvRmie+krxpy7FQNz/MpGEJnbjAXyop yLTsgIorHcVBOPkD5WrskRKABlv5YV92SH/lTFUvtLvWnh++TUifek8ewJjTKvFGQhKE nfhso8CQiguYg1XqyDip0F0VaIwusuT5bpd4j9gFoy4d4DkUzvmX99KfUsKDwmKVYBgZ QvBRFDGOOA4qgcKzasWF8ItyagEQwZmDYBUiB1GPEBRQ8oCXvunEoIcCK/c8xEm3z7M9 4kz2vVwqQ4pT2Mawi4kHbkNbcwzqwsn4JgVnbpdd94wptYsIwD38Bz11FytIPY8n+WBf i5sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=d/2bUWcNzFxcpnKI7+ugh8PRZBa+/iFU8UDy66IrG/E=; b=pGLhbcVhBUgpZMajV6Ha/WL34z5fatIVs31atJMDHOuXX9FVARsPMzld7aDzzsITsU looKwMlAASoIGfxgnLh4S4voEQIdYdkZGLBFNh9JKY4MiQAYm6yTMTryt0Q968Zodzfd RrYky2vIIuECdd20yfmnDd67JflFUyU6keSdCsP2OA6lXK+AF4Cx+8rugREl1uR7ADRR jJ7hQ2Z4F3MPxgucN0wSvXaL3K72hOtwVwRh+/TxkDiF7OCHZG+BwJggtHZCIiiAIweO rX4HEsIx5BF1QOp9TI3YdsJVoT3AeOKTYs+SGcpj5DjDSCNG0/0ahsTfTXoqNnqciO5o Tqfg== X-Gm-Message-State: APjAAAWaVh8TOEavtIk427cGqlzw2CRBq7j0yLAQyPoER3d/Xm0cv+ap dFCVoyXr5pBuefvDmu6pk2SHsJvbFn0= X-Google-Smtp-Source: APXvYqw8yTYJEwz8H3UxIJeMJriQ/VGKoyOT1mj8Dmo4hqBc65yC2yQu3GG79qWE1ZbN4wInFAvMjA== X-Received: by 2002:a63:5a4d:: with SMTP id k13mr52588802pgm.174.1563543365460; Fri, 19 Jul 2019 06:36:05 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:18 +0530 Message-Id: <20190719133530.28688-3-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::541 Subject: [Qemu-devel] [PATCH v6 02/14] qapi/block-core: add option for io_uring 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Only enumerates option for devices that support it Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi --- qapi/block-core.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qapi/block-core.json b/qapi/block-core.json index 0d43d4f37c..0a3d4ae7d2 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -2792,11 +2792,13 @@ # # @threads: Use qemu's thread pool # @native: Use native AIO backend (only Linux and Windows) +# @io_uring: Use linux io_uring (since 4.1) # # Since: 2.9 ## { 'enum': 'BlockdevAioOptions', - 'data': [ 'threads', 'native' ] } + 'data': [ 'threads', 'native', + { 'name': 'io_uring', 'if': 'defined(CONFIG_LINUX_IO_URING)' }= ] } =20 ## # @BlockdevCacheOptions: --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543409; cv=none; d=zoho.com; s=zohoarc; b=LGi3IkmQA8MpQ8q7PuQaBrFcCSqyhp41Epbv3j4kL5mB232Xwa93wNmenTsWT+B9mswa/77842J4azMyDWCJSHYZqyHAa8S24MCbm7cCfkDbz46H9TD4U2sXvWvNaQWm+qZfSL/8pbAhciQyUyIt6+N6Wdf+BlIU0ELycaro968= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543409; h=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:ARC-Authentication-Results; bh=H6PLhtfnLnyVKqBOLq7108F9Sn3pPpFYHAfoVuQwmXo=; b=ISfEWfgcdriNFV3NxhGff8OWKyo3EOa5mzPDmLHysbA8VF1e745vszPJCMl+3h5tJG41QGglmkNQL3+XTev+EV8GLpyHCJ//TPP/lLN/50wS6grbPtGcIGXCLKYjqZs1/V37b5LWphfuyfvqtfnurG4sxZqlotJ4zaWSbtr6+ok= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543409736316.0100814155395; Fri, 19 Jul 2019 06:36:49 -0700 (PDT) Received: from localhost ([::1]:45412 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3z-0004dM-Fy for importer@patchew.org; Fri, 19 Jul 2019 09:36:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37786) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3X-0003Ap-Tm for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT3W-0007hN-UG for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:15 -0400 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:45049) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT3W-0007hD-PC; Fri, 19 Jul 2019 09:36:14 -0400 Received: by mail-pg1-x542.google.com with SMTP id i18so14488222pgl.11; Fri, 19 Jul 2019 06:36:14 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.36.06 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:36:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=H6PLhtfnLnyVKqBOLq7108F9Sn3pPpFYHAfoVuQwmXo=; b=MJYjnLyYcxJsKZev50XCw6P4KeZaDbsLqCpdJzf2cpl/KRR8ugEbtvdCnk7FNhgszE TiyerQOmq09qQ/GYEs7F+u7Ph3HK1Tacux8IJ+M0cKQ5pt1zgead3eP4TkIOSTihU2xU jwKFYkJE8PMheE8Lx7brQFcuqdvAJNy1WTYmGD1Zdtui56yx38GVocLLZkQXJ5R8bZ3V lU4xg0CvpbKkzR4mGV4t/RJbut1WzkG/eQEpDAt0bbbxicA9HH7Du+lcHjuAAy1GOipn n8ZSey7++rOjgYR3T+1JXIs7sPKJrIWhm11AK5nGuZ8qojhg8sdu0s2vjP5R+4s3PqhK kguA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=H6PLhtfnLnyVKqBOLq7108F9Sn3pPpFYHAfoVuQwmXo=; b=YpAYqtAGk3PHMM5FpO7DQrMfZzOmf8+Rg0rvxFR7Uhl8QlxZIMPGUN9RBWNTGH12DY PYonzUUrrvwwprGgDrH/LHgkqjVBpJ2rRxvPfmCiw66NyyR+6SAUVLX/paOW13T6aAJm VeBicNhr8rK3xy1zaaGXnWFL6zM54ZPl3qFMj7QnsFrNMxkyhHiQq4TiG+tmSNLrJ1yP J8yhsD115q12RG5qbCoj2pD4qkAaC1FE+pxcJEceVm/pgKhW6IjDS+IC6Zt4i4t/Ya9X p5cRJEdspd3PDoXqlNf+5yt+7V5jFylO6JNh7xo4kOQYFcng9OvI09iK3HxIfMT+zUOo MzOw== X-Gm-Message-State: APjAAAW4Ng6U4KB2Da2j6HZQHqpF3fvQNNlfgBjGoV52yS/HrcpeFZ6D cHJITOtsjDDyCWOsKqYGjLr9z0VkPNA= X-Google-Smtp-Source: APXvYqzTy97aRE1j2BnGXD1k88zOe+thca17sk9LARCXp8cenAU+3hKUVE9f4BeYU8DHPmEBVHP0CA== X-Received: by 2002:a63:204b:: with SMTP id r11mr14386295pgm.121.1563543373498; Fri, 19 Jul 2019 06:36:13 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:19 +0530 Message-Id: <20190719133530.28688-4-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::542 Subject: [Qemu-devel] [PATCH v6 03/14] block/block: add BDRV flag for io_uring 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta , Maxim Levitsky Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi Reviewed-by: Maxim Levitsky --- include/block/block.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/block/block.h b/include/block/block.h index 734c9d2f76..40bd93cd0f 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -121,6 +121,7 @@ typedef struct HDGeometry { ignoring the format layer */ #define BDRV_O_NO_IO 0x10000 /* don't initialize for I/O */ #define BDRV_O_AUTO_RDONLY 0x20000 /* degrade to read-only if opening read= -write fails */ +#define BDRV_O_IO_URING 0x40000 /* use io_uring instead of the thread p= ool */ =20 #define BDRV_O_CACHE_MASK (BDRV_O_NOCACHE | BDRV_O_NO_FLUSH) =20 --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543436; cv=none; d=zoho.com; s=zohoarc; b=MsNz5iCFw8BXpegbo05DKjYwJQQyRGQ+EQzdprvJHWRulIfOL165/QYYqCx/kMWZGu4KlEBrsRN4A4bvFWbGbCiqsjJkvWoJ8CChT0867nKa8V19lPf/VYTQkLIi+65s2ao8ty2bawWPF6jD92Zruk9R85LKs9TYRuVCZ5fNW0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543436; h=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:ARC-Authentication-Results; bh=Ra+TJRk5spz9KvnNsnTfoDS6SmCHu9/f+HdRzhh+98M=; b=OWt2ZXx60yeRfk0wjhpHbyJZ/jKVRORpkM22mZnTHp62fhTsndzGwZBeQULvTwudJgWhrRcu/1xS3A9uEL3/0gh0rAAfBLcl1eBaoUWZeWakGwEk5zN1/U/dOUDtlhc0k7brMf6Y7aqq+oEgIRc9Pm19uMJ5LkMfH3ZwoFZBAWo= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156354343647586.67301226817813; Fri, 19 Jul 2019 06:37:16 -0700 (PDT) Received: from localhost ([::1]:45438 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4V-0006n9-04 for importer@patchew.org; Fri, 19 Jul 2019 09:37:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37836) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3i-0003vs-C7 for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT3f-0007lk-Vt for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:26 -0400 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]:43319) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT3f-0007lG-DQ; Fri, 19 Jul 2019 09:36:23 -0400 Received: by mail-pf1-x444.google.com with SMTP id i189so14205634pfg.10; Fri, 19 Jul 2019 06:36:23 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.36.13 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ra+TJRk5spz9KvnNsnTfoDS6SmCHu9/f+HdRzhh+98M=; b=XB6wsQHrd01JK8pg0cjsG/2keyBF4JWoWIiIkrQY53a1As+Wbmkea3XvJxaFg8EYfe WDebIxjVRLa9iJqpOOSDu5jnzmtGzkyGz1ySHSRC+Snv8TC/wWxboSdOhGKDPbZRMB7k jLa1GQJEySY6Eoq3x3H0FUorPsVj2BFfL5kGTDsVLEESHylTsYGR74tDb6bcFBeehazL C/1jYaVvPN5JaM5H7prkThLTnHFvMhRcaS7eB6lLaYGD+snuFkKKK+Z35cIG4wIxqfEh Rx+4xNbHX6yHLZCuxyCF44oMkenrmI7Vq1c7iUCTzYoLLSSuO7yRBENgPX5WtCJbu6ZT ZQ0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ra+TJRk5spz9KvnNsnTfoDS6SmCHu9/f+HdRzhh+98M=; b=Nv28iLXpmPgQm2vGhTRG+j0V1ibSxg1XgWsAxHdZ0AgcgfNMweU+6jCD+/DV7VuUeX 3HJ07ksafpGO/d7qJmd4A+0BdOpte4hvG6kkgnnMPRSlPG6IyFs3IAl48f3Bqzhd2ydn QYYUCyCIuhm0dizLEV3VIPPLvywEA1EQTtlXgQ/Uoiv2dYlkhs3QFGCNbawGx/9tVn1g 5QwrDAUQbpYm9KmlvH7xFCobhn/6A0UAFSIM9gkGMPT4kkQCbFs8RVia3Fmggcsv/cWU aXLqOwJJPfZJoCNmmWELkFI4VDumxmBNUyToNEP/IUpFs4hihL4PZfMAMHEEnoejKXiz Qg5w== X-Gm-Message-State: APjAAAW7uwvTRF6wTUrxsATWcwiZaZLZhp9BA8eHxcRrDEG85Dqumao4 4whkZy7eSyb5dXFmL+HQd4tWW3b4PK0= X-Google-Smtp-Source: APXvYqzasGUDjWQgoSNheLP5G3nA/+QwItSXWbz55o5btKje8EJ0SuFYa8fuO/pCblIMFUq2xQF2BQ== X-Received: by 2002:a63:8f16:: with SMTP id n22mr48379581pgd.306.1563543381947; Fri, 19 Jul 2019 06:36:21 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:20 +0530 Message-Id: <20190719133530.28688-5-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::444 Subject: [Qemu-devel] [PATCH v6 04/14] block/io_uring: implements interfaces for io_uring 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Aborts when sqe fails to be set as sqes cannot be returned to the ring. Adds slow path for short reads for older kernels Signed-off-by: Aarushi Mehta Signed-off-by: Stefan Hajnoczi --- MAINTAINERS | 7 + block.c | 22 +++ block/Makefile.objs | 3 + block/io_uring.c | 408 ++++++++++++++++++++++++++++++++++++++++ include/block/aio.h | 16 +- include/block/block.h | 1 + include/block/raw-aio.h | 12 ++ 7 files changed, 468 insertions(+), 1 deletion(-) create mode 100644 block/io_uring.c diff --git a/MAINTAINERS b/MAINTAINERS index cc9636b43a..651f417f4b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2531,6 +2531,13 @@ F: block/file-posix.c F: block/file-win32.c F: block/win32-aio.c =20 +Linux io_uring +M: Aarushi Mehta +R: Stefan Hajnoczi +L: qemu-block@nongnu.org +S: Maintained +F: block/io_uring.c + qcow2 M: Kevin Wolf M: Max Reitz diff --git a/block.c b/block.c index 29e931e217..4aa3500ad8 100644 --- a/block.c +++ b/block.c @@ -844,6 +844,28 @@ static BlockdevDetectZeroesOptions bdrv_parse_detect_z= eroes(QemuOpts *opts, return detect_zeroes; } =20 +/** + * Set flags for aio engine + * + * Return 0 on success, -1 if the engine specifies is invalid + */ +int bdrv_parse_aio(const char *mode, int *flags) +{ + if (!strcmp(mode, "threads")) { + /* do nothing, default */ + } else if (!strcmp(mode, "native")) { + *flags |=3D BDRV_O_NATIVE_AIO; +#ifdef CONFIG_LINUX_IO_URING + } else if (!strcmp(mode, "io_uring")) { + *flags |=3D BDRV_O_IO_URING; +#endif + } else { + return -1; + } + + return 0; +} + /** * Set open flags for a given discard mode * diff --git a/block/Makefile.objs b/block/Makefile.objs index 35f3bca4d9..6a548af8ed 100644 --- a/block/Makefile.objs +++ b/block/Makefile.objs @@ -18,6 +18,7 @@ block-obj-y +=3D block-backend.o snapshot.o qapi.o block-obj-$(CONFIG_WIN32) +=3D file-win32.o win32-aio.o block-obj-$(CONFIG_POSIX) +=3D file-posix.o block-obj-$(CONFIG_LINUX_AIO) +=3D linux-aio.o +block-obj-$(CONFIG_LINUX_IO_URING) +=3D io_uring.o block-obj-y +=3D null.o mirror.o commit.o io.o create.o block-obj-y +=3D throttle-groups.o block-obj-$(CONFIG_LINUX) +=3D nvme.o @@ -61,5 +62,7 @@ block-obj-$(if $(CONFIG_LZFSE),m,n) +=3D dmg-lzfse.o dmg-lzfse.o-libs :=3D $(LZFSE_LIBS) qcow.o-libs :=3D -lz linux-aio.o-libs :=3D -laio +io_uring.o-cflags :=3D $(LINUX_IO_URING_CFLAGS) +io_uring.o-libs :=3D $(LINUX_IO_URING_LIBS) parallels.o-cflags :=3D $(LIBXML2_CFLAGS) parallels.o-libs :=3D $(LIBXML2_LIBS) diff --git a/block/io_uring.c b/block/io_uring.c new file mode 100644 index 0000000000..e8dbc388a6 --- /dev/null +++ b/block/io_uring.c @@ -0,0 +1,408 @@ +/* + * Linux io_uring support. + * + * Copyright (C) 2009 IBM, Corp. + * Copyright (C) 2009 Red Hat, Inc. + * Copyright (C) 2019 Aarushi Mehta + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ +#include "qemu/osdep.h" +#include +#include "qemu-common.h" +#include "block/aio.h" +#include "qemu/queue.h" +#include "block/block.h" +#include "block/raw-aio.h" +#include "qemu/coroutine.h" +#include "qapi/error.h" + +#define MAX_EVENTS 128 + +typedef struct LuringAIOCB { + Coroutine *co; + struct io_uring_sqe sqeq; + ssize_t ret; + QEMUIOVector *qiov; + bool is_read; + QSIMPLEQ_ENTRY(LuringAIOCB) next; + + /* + * Buffered reads may require resubmission, see + * luring_resubmit_short_read(). + */ + int total_read; + QEMUIOVector resubmit_qiov; +} LuringAIOCB; + +typedef struct LuringQueue { + int plugged; + unsigned int in_queue; + unsigned int in_flight; + bool blocked; + QSIMPLEQ_HEAD(, LuringAIOCB) sq_overflow; +} LuringQueue; + +typedef struct LuringState { + AioContext *aio_context; + + struct io_uring ring; + + /* io queue for submit at batch. Protected by AioContext lock. */ + LuringQueue io_q; + + /* I/O completion processing. Only runs in I/O thread. */ + QEMUBH *completion_bh; +} LuringState; + +/** + * ioq_submit: + * @s: AIO state + * + * Queues pending sqes and submits them + * + */ +static int ioq_submit(LuringState *s); + +/** + * luring_resubmit: + * + * Resubmit a request by appending it to sq_overflow. The caller must ens= ure + * that ioq_submit() is called later so that sq_overflow requests are star= ted. + */ +static void luring_resubmit(LuringState *s, LuringAIOCB *luringcb) +{ + QSIMPLEQ_INSERT_TAIL(&s->io_q.sq_overflow, luringcb, next); + s->io_q.in_queue++; +} + +/** + * luring_resubmit_short_read: + * + * Before Linux commit 9d93a3f5a0c ("io_uring: punt short reads to async + * context") a buffered I/O request with the start of the file range in the + * page cache could result in a short read. Applications need to resubmit= the + * remaining read request. + * + * This is a slow path but recent kernels never take it. + */ +static void luring_resubmit_short_read(LuringState *s, LuringAIOCB *luring= cb, + int nread) +{ + QEMUIOVector *resubmit_qiov; + size_t remaining; + + /* Update read position */ + luringcb->total_read =3D nread; + remaining =3D luringcb->qiov->size - luringcb->total_read; + + /* Shorten qiov */ + resubmit_qiov =3D &luringcb->resubmit_qiov; + if (resubmit_qiov->iov =3D=3D NULL) { + qemu_iovec_init(resubmit_qiov, luringcb->qiov->niov); + } else { + qemu_iovec_reset(resubmit_qiov); + } + qemu_iovec_concat(resubmit_qiov, luringcb->qiov, luringcb->total_read, + remaining); + + /* Update sqe */ + luringcb->sqeq.off =3D nread; + luringcb->sqeq.addr =3D (__u64)(uintptr_t)luringcb->resubmit_qiov.iov; + luringcb->sqeq.len =3D luringcb->resubmit_qiov.niov; + + luring_resubmit(s, luringcb); +} + +/** + * luring_process_completions: + * @s: AIO state + * + * Fetches completed I/O requests, consumes cqes and invokes their callbac= ks + * The function is somewhat tricky because it supports nested event loops,= for + * example when a request callback invokes aio_poll(). In order to do thi= s, + * indices are kept in LuringState. Function schedules BH completion so it + * can be called again in a nested event loop. When there are no events l= eft + * to complete the BH is being canceled. + * + */ +static void luring_process_completions(LuringState *s) +{ + struct io_uring_cqe *cqes; + int total_bytes; + /* + * Request completion callbacks can run the nested event loop. + * Schedule ourselves so the nested event loop will "see" remaining + * completed requests and process them. Without this, completion + * callbacks that wait for other requests using a nested event loop + * would hang forever. + * + * This workaround is needed because io_uring uses poll_wait, which + * is woken up when new events are added to the uring, thus polling on + * the same uring fd will block unless more events are received. + * + * Other leaf block drivers (drivers that access the data themselves) + * are networking based, so they poll sockets for data and run the + * correct coroutine. + */ + qemu_bh_schedule(s->completion_bh); + + while (io_uring_peek_cqe(&s->ring, &cqes) =3D=3D 0) { + LuringAIOCB *luringcb; + int ret; + + if (!cqes) { + break; + } + + luringcb =3D io_uring_cqe_get_data(cqes); + ret =3D cqes->res; + io_uring_cqe_seen(&s->ring, cqes); + cqes =3D NULL; + + /* Change counters one-by-one because we can be nested. */ + s->io_q.in_flight--; + + /* total_read is non-zero only for resubmitted read requests */ + total_bytes =3D ret + luringcb->total_read; + + if (ret < 0) { + if (ret =3D=3D -EINTR) { + luring_resubmit(s, luringcb); + continue; + } + } else if (!luringcb->qiov) { + goto end; + } else if (total_bytes =3D=3D luringcb->qiov->size) { + ret =3D 0; + /* Only read/write */ + } else { + /* Short Read/Write */ + if (luringcb->is_read) { + if (ret > 0) { + luring_resubmit_short_read(s, luringcb, ret); + continue; + } else { + /* Pad with zeroes */ + qemu_iovec_memset(luringcb->qiov, total_bytes, 0, + luringcb->qiov->size - total_bytes); + ret =3D 0; + } + } else { + ret =3D -ENOSPC;; + } + } +end: + luringcb->ret =3D ret; + qemu_iovec_destroy(&luringcb->resubmit_qiov); + + /* + * If the coroutine is already entered it must be in ioq_submit() + * and will notice luringcb->ret has been filled in when it + * eventually runs later. Coroutines cannot be entered recursively + * so avoid doing that! + */ + if (!qemu_coroutine_entered(luringcb->co)) { + aio_co_wake(luringcb->co); + } + } + qemu_bh_cancel(s->completion_bh); +} + +static void luring_process_completions_and_submit(LuringState *s) +{ + aio_context_acquire(s->aio_context); + luring_process_completions(s); + + if (!s->io_q.plugged && s->io_q.in_queue > 0) { + ioq_submit(s); + } + aio_context_release(s->aio_context); +} + +static void qemu_luring_completion_bh(void *opaque) +{ + LuringState *s =3D opaque; + luring_process_completions_and_submit(s); +} + +static void qemu_luring_completion_cb(void *opaque) +{ + LuringState *s =3D opaque; + luring_process_completions_and_submit(s); +} + +static void ioq_init(LuringQueue *io_q) +{ + QSIMPLEQ_INIT(&io_q->sq_overflow); + io_q->plugged =3D 0; + io_q->in_queue =3D 0; + io_q->in_flight =3D 0; + io_q->blocked =3D false; +} + +static int ioq_submit(LuringState *s) +{ + int ret =3D 0; + LuringAIOCB *luringcb, *luringcb_next; + + while (s->io_q.in_queue > 0) { + /* + * Try to fetch sqes from the ring for requests waiting in + * the overflow queue + */ + QSIMPLEQ_FOREACH_SAFE(luringcb, &s->io_q.sq_overflow, next, + luringcb_next) { + struct io_uring_sqe *sqes =3D io_uring_get_sqe(&s->ring); + if (!sqes) { + break; + } + /* Prep sqe for submission */ + *sqes =3D luringcb->sqeq; + QSIMPLEQ_REMOVE_HEAD(&s->io_q.sq_overflow, next); + } + ret =3D io_uring_submit(&s->ring); + /* Prevent infinite loop if submission is refused */ + if (ret <=3D 0) { + if (ret =3D=3D -EAGAIN) { + continue; + } + break; + } + s->io_q.in_flight +=3D ret; + s->io_q.in_queue -=3D ret; + } + s->io_q.blocked =3D (s->io_q.in_queue > 0); + + if (s->io_q.in_flight) { + /* + * We can try to complete something just right away if there are + * still requests in-flight. + */ + luring_process_completions(s); + } + return ret; +} + +void luring_io_plug(BlockDriverState *bs, LuringState *s) +{ + s->io_q.plugged++; +} + +void luring_io_unplug(BlockDriverState *bs, LuringState *s) +{ + assert(s->io_q.plugged); + if (--s->io_q.plugged =3D=3D 0 && + !s->io_q.blocked && s->io_q.in_queue > 0) { + ioq_submit(s); + } +} + +/** + * luring_do_submit: + * @fd: file descriptor for I/O + * @luringcb: AIO control block + * @s: AIO state + * @offset: offset for request + * @type: type of request + * + * Fetches sqes from ring, adds to pending queue and preps them + * + */ +static int luring_do_submit(int fd, LuringAIOCB *luringcb, LuringState *s, + uint64_t offset, int type) +{ + struct io_uring_sqe *sqes =3D &luringcb->sqeq; + + switch (type) { + case QEMU_AIO_WRITE: + io_uring_prep_writev(sqes, fd, luringcb->qiov->iov, + luringcb->qiov->niov, offset); + break; + case QEMU_AIO_READ: + io_uring_prep_readv(sqes, fd, luringcb->qiov->iov, + luringcb->qiov->niov, offset); + break; + case QEMU_AIO_FLUSH: + io_uring_prep_fsync(sqes, fd, 0); + break; + default: + fprintf(stderr, "%s: invalid AIO request type, aborting 0x%x.\n", + __func__, type); + abort(); + } + io_uring_sqe_set_data(sqes, luringcb); + + QSIMPLEQ_INSERT_TAIL(&s->io_q.sq_overflow, luringcb, next); + s->io_q.in_queue++; + + if (!s->io_q.blocked && + (!s->io_q.plugged || + s->io_q.in_flight + s->io_q.in_queue >=3D MAX_EVENTS)) { + return ioq_submit(s); + } + return 0; +} + +int coroutine_fn luring_co_submit(BlockDriverState *bs, LuringState *s, in= t fd, + uint64_t offset, QEMUIOVector *qiov, int t= ype) +{ + int ret; + LuringAIOCB luringcb =3D { + .co =3D qemu_coroutine_self(), + .ret =3D -EINPROGRESS, + .qiov =3D qiov, + .is_read =3D (type =3D=3D QEMU_AIO_READ), + }; + + ret =3D luring_do_submit(fd, &luringcb, s, offset, type); + if (ret < 0) { + return ret; + } + + if (luringcb.ret =3D=3D -EINPROGRESS) { + qemu_coroutine_yield(); + } + return luringcb.ret; +} + +void luring_detach_aio_context(LuringState *s, AioContext *old_context) +{ + aio_set_fd_handler(old_context, s->ring.ring_fd, false, NULL, NULL, NU= LL, + s); + qemu_bh_delete(s->completion_bh); + s->aio_context =3D NULL; +} + +void luring_attach_aio_context(LuringState *s, AioContext *new_context) +{ + s->aio_context =3D new_context; + s->completion_bh =3D aio_bh_new(new_context, qemu_luring_completion_bh= , s); + aio_set_fd_handler(s->aio_context, s->ring.ring_fd, false, + qemu_luring_completion_cb, NULL, NULL, s); +} + +LuringState *luring_init(Error **errp) +{ + int rc; + LuringState *s; + s =3D g_new0(LuringState, 1); + struct io_uring *ring =3D &s->ring; + rc =3D io_uring_queue_init(MAX_EVENTS, ring, 0); + if (rc < 0) { + error_setg_errno(errp, errno, "failed to init linux io_uring ring"= ); + g_free(s); + return NULL; + } + + ioq_init(&s->io_q); + return s; + +} + +void luring_cleanup(LuringState *s) +{ + io_uring_queue_exit(&s->ring); + g_free(s); +} diff --git a/include/block/aio.h b/include/block/aio.h index 6b0d52f732..7ba9bd7874 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -49,6 +49,7 @@ typedef void IOHandler(void *opaque); struct Coroutine; struct ThreadPool; struct LinuxAioState; +struct LuringState; =20 struct AioContext { GSource source; @@ -117,11 +118,19 @@ struct AioContext { struct ThreadPool *thread_pool; =20 #ifdef CONFIG_LINUX_AIO - /* State for native Linux AIO. Uses aio_context_acquire/release for + /* + * State for native Linux AIO. Uses aio_context_acquire/release for * locking. */ struct LinuxAioState *linux_aio; #endif +#ifdef CONFIG_LINUX_IO_URING + /* + * State for Linux io_uring. Uses aio_context_acquire/release for + * locking. + */ + struct LuringState *linux_io_uring; +#endif =20 /* TimerLists for calling timers - one per clock type. Has its own * locking. @@ -386,6 +395,11 @@ struct LinuxAioState *aio_setup_linux_aio(AioContext *= ctx, Error **errp); /* Return the LinuxAioState bound to this AioContext */ struct LinuxAioState *aio_get_linux_aio(AioContext *ctx); =20 +/* Setup the LuringState bound to this AioContext */ +struct LuringState *aio_setup_linux_io_uring(AioContext *ctx, Error **errp= ); + +/* Return the LuringState bound to this AioContext */ +struct LuringState *aio_get_linux_io_uring(AioContext *ctx); /** * aio_timer_new_with_attrs: * @ctx: the aio context diff --git a/include/block/block.h b/include/block/block.h index 40bd93cd0f..bd1ac0b93c 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -297,6 +297,7 @@ void bdrv_append(BlockDriverState *bs_new, BlockDriverS= tate *bs_top, void bdrv_replace_node(BlockDriverState *from, BlockDriverState *to, Error **errp); =20 +int bdrv_parse_aio(const char *mode, int *flags); int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough= ); int bdrv_parse_discard_flags(const char *mode, int *flags); BdrvChild *bdrv_open_child(const char *filename, diff --git a/include/block/raw-aio.h b/include/block/raw-aio.h index 0cb7cc74a2..71d7d1395f 100644 --- a/include/block/raw-aio.h +++ b/include/block/raw-aio.h @@ -55,6 +55,18 @@ void laio_attach_aio_context(LinuxAioState *s, AioContex= t *new_context); void laio_io_plug(BlockDriverState *bs, LinuxAioState *s); void laio_io_unplug(BlockDriverState *bs, LinuxAioState *s); #endif +/* io_uring.c - Linux io_uring implementation */ +#ifdef CONFIG_LINUX_IO_URING +typedef struct LuringState LuringState; +LuringState *luring_init(Error **errp); +void luring_cleanup(LuringState *s); +int coroutine_fn luring_co_submit(BlockDriverState *bs, LuringState *s, in= t fd, + uint64_t offset, QEMUIOVector *qiov, int t= ype); +void luring_detach_aio_context(LuringState *s, AioContext *old_context); +void luring_attach_aio_context(LuringState *s, AioContext *new_context); +void luring_io_plug(BlockDriverState *bs, LuringState *s); +void luring_io_unplug(BlockDriverState *bs, LuringState *s); +#endif =20 #ifdef _WIN32 typedef struct QEMUWin32AIOState QEMUWin32AIOState; --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543421; cv=none; d=zoho.com; s=zohoarc; b=PjnapMGnD1yeLfNzrnEvIPyIZP6Kl1og9jDngxIFqVLG4sLWKjIx+Z2TkzFC8o1Ryj6VKtc9haEZp6Mf0+FNODQu4GWq0JYZjva06dVQKV1ZCLjX6fkXiYPL99Q1q80sN1PSYx/SFgaGbikQ1NbaLfPNseV4S178PtCQPAv2hd4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543421; h=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:ARC-Authentication-Results; bh=VSkhdyNuTHd130Aa5REO4Nkkx5xHnHniJbmIfD3ng9w=; b=Od3BkvPOF/XTSB9zBUcs133IqRqspY3dxm3QE+U8d4EshS+vYP+fbMb2EwmQpZDyZ0FFOxOBbMWM94ZQPfEHnD9jRKvMVUud8184jNQF1sJoTXIO1BlEan7SprtmUW7qp9GmA7ldTWERNUaQRcVq5y+ARx6ER2UWotvkoUYije4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543421319354.16787650387164; Fri, 19 Jul 2019 06:37:01 -0700 (PDT) Received: from localhost ([::1]:45435 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4F-000653-Re for importer@patchew.org; Fri, 19 Jul 2019 09:36:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37868) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3o-0004PH-RH for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT3n-0007oq-L8 for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:32 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:45339) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT3n-0007o7-FU; Fri, 19 Jul 2019 09:36:31 -0400 Received: by mail-pl1-x644.google.com with SMTP id y8so15649951plr.12; Fri, 19 Jul 2019 06:36:30 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.36.22 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:36:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VSkhdyNuTHd130Aa5REO4Nkkx5xHnHniJbmIfD3ng9w=; b=mO/e7HSRTBPGwc9gkbo7ZXpaCvJkKsZUKzL5oZamgfw61ywMKTKIRDllKsMJogK/fZ dTDpBZulpBnqxhAGZo6kAZUumgSMYuOAR9jrzT43LWFmU0/5uqAd/CqI2SDftCTldqfO IcTF6vocn+VawM8mz6sYY9BDeIQrFgelhTycTSKsvK/ZIAoQrHqeNrPMIf6wj3oqdO/4 aqYHQ1x1tqxIt7SjgPb++YgTnPBgoFL/H8/uo1sMLfCOi/A5Y4qbYSeTCU3UckAQcQLy y/xIYFwhMYewXEEZwqYtvWVhaivRgTXDpHulYjuYDta+GvdUMZqVOa+1yTNk23GZLSAn xn9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VSkhdyNuTHd130Aa5REO4Nkkx5xHnHniJbmIfD3ng9w=; b=lDKnK12IgMhJfSiVw6xMLGU1lYwayGQlifT2UDo7GirDUKanHa/MBl5tYa2r+BQD7D IpLTFqYTGvNbTmufVo+3B7F/k2tdcqcz+zHgFxObOxC5btjOsL0cwD5INBdZHJcCekad tf3xAb5zdLAPVtNlakU5tv2b1zhuzw4AWL51sigpiM79Z/zbfh7Xg5eASPumrR+M3JAT iHeBRlXpFJb3fl16AOCrKiKdydjD+fMsTEKEjcSvOBC5+Cz9ATwjlpFaEstDApV7xpWh xzn9f9ttjXp3sigb5pxGMhYbg+LHvVx6nrNKrLBhjNFXc1iC+aHO4cD+KihvKlU1iDW0 K5tw== X-Gm-Message-State: APjAAAWCB2qynly2LA3B2bgFeuCbCMoccw0Pw5yn37rDLjuvNFd+Ztfr PNhmEVkCwDv2q7ZxSHtoMiZi13YF1K0= X-Google-Smtp-Source: APXvYqwCgbk1LsuxqmvG8704YASTyBRmVxICCN20HsyvF0kL4J1n/MOwle4R5o2LZqPQhNIomsOG+Q== X-Received: by 2002:a17:902:e30d:: with SMTP id cg13mr56750261plb.173.1563543389709; Fri, 19 Jul 2019 06:36:29 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:21 +0530 Message-Id: <20190719133530.28688-6-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::644 Subject: [Qemu-devel] [PATCH v6 05/14] stubs: add stubs for io_uring interface 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi --- MAINTAINERS | 1 + stubs/Makefile.objs | 1 + stubs/io_uring.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 stubs/io_uring.c diff --git a/MAINTAINERS b/MAINTAINERS index 651f417f4b..b996bc3abd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2537,6 +2537,7 @@ R: Stefan Hajnoczi L: qemu-block@nongnu.org S: Maintained F: block/io_uring.c +F: stubs/io_uring.c =20 qcow2 M: Kevin Wolf diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs index 9c7393b08c..5cf160a9c8 100644 --- a/stubs/Makefile.objs +++ b/stubs/Makefile.objs @@ -13,6 +13,7 @@ stub-obj-y +=3D iothread.o stub-obj-y +=3D iothread-lock.o stub-obj-y +=3D is-daemonized.o stub-obj-$(CONFIG_LINUX_AIO) +=3D linux-aio.o +stub-obj-$(CONFIG_LINUX_IO_URING) +=3D io_uring.o stub-obj-y +=3D machine-init-done.o stub-obj-y +=3D migr-blocker.o stub-obj-y +=3D change-state-handler.o diff --git a/stubs/io_uring.c b/stubs/io_uring.c new file mode 100644 index 0000000000..622d1e4648 --- /dev/null +++ b/stubs/io_uring.c @@ -0,0 +1,32 @@ +/* + * Linux io_uring support. + * + * Copyright (C) 2009 IBM, Corp. + * Copyright (C) 2009 Red Hat, Inc. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ +#include "qemu/osdep.h" +#include "block/aio.h" +#include "block/raw-aio.h" + +void luring_detach_aio_context(LuringState *s, AioContext *old_context) +{ + abort(); +} + +void luring_attach_aio_context(LuringState *s, AioContext *new_context) +{ + abort(); +} + +LuringState *luring_init(Error **errp) +{ + abort(); +} + +void luring_cleanup(LuringState *s) +{ + abort(); +} --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543480; cv=none; d=zoho.com; s=zohoarc; b=N5+NECRoO1MTb0uo2YGdfj8WZi1ZGS8snDNVypBbsMHsqUPDfE1pW6w9iX65Uz855hP9Agp2F4KRxL5Sw8iGtcDSIK2UOUMtHcucDryKsOGkzprOEw539hglfuw1avku7j6rI0BtHA4QZjhNngkshPcQL3z9mAcPrSaDVTooAp8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543480; h=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:ARC-Authentication-Results; bh=eFjnzxuAegStXPBjOt40eXvFDqL2hXLnGuTLIfY9ow8=; b=kGM/JXmyZw29N6wElpZVX5mXoTvSlP7jGYQE0dGklRypse4a27D+b2C4g08PsMUHGpCSfP7Y13F02zR7v8FpjXscmor+/aZvEsFj6ZW55BNllXUhe2Fv8N9nr5U/h+9ytxojC0yHHmAhg1nQzr0eXjLcDEvmgfeDhCx3tzFpFfo= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543480959368.353905789337; Fri, 19 Jul 2019 06:38:00 -0700 (PDT) Received: from localhost ([::1]:45480 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT5D-0001tk-Jh for importer@patchew.org; Fri, 19 Jul 2019 09:37:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37927) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT3v-0004u4-My for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT3u-0007u7-JF for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:39 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:43320) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT3u-0007tf-Ds; Fri, 19 Jul 2019 09:36:38 -0400 Received: by mail-pf1-x443.google.com with SMTP id i189so14205901pfg.10; Fri, 19 Jul 2019 06:36:38 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.36.30 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:36:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eFjnzxuAegStXPBjOt40eXvFDqL2hXLnGuTLIfY9ow8=; b=RebFAGVJkcZKtmrkzEZ4nebaOaPuqSOBSXT7C7NhIEQtEEx6YKpcA3hHRhJdLbJSvH URBTRkpK9uHKtvdDYOW2mo55hy3sumUsrzuh7gh5RPC3ABn+gThmGBpbv0Zu830Aqmty K3uXM8Eg/lTb73V7Z0rPOpKGBrlBgn7Lnt6E3lMUGSIKuUoQlYxuOQaYO2IHospQ7dPc FFpbAHInTiOqAJpXOM4e38t9SmjJCKreTRnYQbFOp2+qf0vk9OV7leGQmCsxSou/0LkT SUFedYLAdS49K85v5wHxTxwWB7s0dIK1VIWG7X5H9ZR6FvYbsYFmXsW8VsHsqw36mEYD TvnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eFjnzxuAegStXPBjOt40eXvFDqL2hXLnGuTLIfY9ow8=; b=Zl9cczvO5s6UWMY3Po0CetFxSVndAYNhWB4PTndQ4Mwv04y5WEsW6ibiYPqygIzJG7 5Vb/unt6CXnlC/tLVED4v7q8O4AtlQW+noRdOgXLeJVsVkhigFo2kcyXK8UiuOfRz17D wYWhUB6BavMYGsPOspZildo5n3KtuFpYPGpSctbj/PWORqifNVeqrGt2xIrO1YPzedF4 hjZWwgmSJGMRJz/OuH7/10B5Ok7QE3Rv6hL4ImdKC//GMDavo7eVG8oVlC3nMT3x/eUN os7nhI9q8tgo5x/StUyDSnUi4ORGYpt+PM0/B0iZD04E1Nmw50Gv+aQx4X8++b5sFk2p EpJQ== X-Gm-Message-State: APjAAAUnvQyUuSRyR1G6i1yRDwCtKMKgU0i6djrZzWVJrnd1EdxArYrI RSU/mxcwCrUFMBjd6BJQQb+d53IQp1A= X-Google-Smtp-Source: APXvYqwmXFfy9NqCX/JJQrrktnjZR0cu+A+s15Lyx/8B4c+e1WdAiiUVkpdncNU8trpBveQXjnEf5w== X-Received: by 2002:a17:90a:25af:: with SMTP id k44mr56882008pje.122.1563543397184; Fri, 19 Jul 2019 06:36:37 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:22 +0530 Message-Id: <20190719133530.28688-7-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::443 Subject: [Qemu-devel] [PATCH v6 06/14] util/async: add aio interfaces for io_uring 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi --- util/async.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/util/async.c b/util/async.c index 8d2105729c..2e0a5e20ac 100644 --- a/util/async.c +++ b/util/async.c @@ -276,6 +276,14 @@ aio_ctx_finalize(GSource *source) } #endif =20 +#ifdef CONFIG_LINUX_IO_URING + if (ctx->linux_io_uring) { + luring_detach_aio_context(ctx->linux_io_uring, ctx); + luring_cleanup(ctx->linux_io_uring); + ctx->linux_io_uring =3D NULL; + } +#endif + assert(QSLIST_EMPTY(&ctx->scheduled_coroutines)); qemu_bh_delete(ctx->co_schedule_bh); =20 @@ -340,6 +348,29 @@ LinuxAioState *aio_get_linux_aio(AioContext *ctx) } #endif =20 +#ifdef CONFIG_LINUX_IO_URING +LuringState *aio_setup_linux_io_uring(AioContext *ctx, Error **errp) +{ + if (ctx->linux_io_uring) { + return ctx->linux_io_uring; + } + + ctx->linux_io_uring =3D luring_init(errp); + if (!ctx->linux_io_uring) { + return NULL; + } + + luring_attach_aio_context(ctx->linux_io_uring, ctx); + return ctx->linux_io_uring; +} + +LuringState *aio_get_linux_io_uring(AioContext *ctx) +{ + assert(ctx->linux_io_uring); + return ctx->linux_io_uring; +} +#endif + void aio_notify(AioContext *ctx) { /* Write e.g. bh->scheduled before reading ctx->notify_me. Pairs @@ -431,6 +462,11 @@ AioContext *aio_context_new(Error **errp) #ifdef CONFIG_LINUX_AIO ctx->linux_aio =3D NULL; #endif + +#ifdef CONFIG_LINUX_IO_URING + ctx->linux_io_uring =3D NULL; +#endif + ctx->thread_pool =3D NULL; qemu_rec_mutex_init(&ctx->lock); timerlistgroup_init(&ctx->tlg, aio_timerlist_notify, ctx); --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543514; cv=none; d=zoho.com; s=zohoarc; b=SCrkwawb2g/ajBpO+lUTApGAd4zud3DVcEoPJ1/WpI/wkZO1rzMJ8ftAU6JN4IhiXE71IbNBrAdmjKg4tktSUwTuTzEnTlYW9BrcX8wZI+XiGyT8lQi8JgNdnogiB/DfmOY14f5fmvhCHVffSIpSJr+dGG66Miku4qFwrw14MiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543514; h=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:ARC-Authentication-Results; bh=bjo2OWZfzDM9JJnmfjwrjNDcJFN5qjeOYd8x/VH9dn4=; b=AjQnlTBXff4RQzVWl6aPb35jsBHsCC/bR9utQfO5oxSP9r04sC43x3ipja5eWqxuPPmN9G5nSYxmtmJ/Cu+advaHhtNkAi2aAaTUXa10F5JN9aIndQqiYvx6OhMkMglwGJYBBumdEBHKt9AY/+sL9lQSIp//4voo+8QXefs8oK8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543514140181.9665550433641; Fri, 19 Jul 2019 06:38:34 -0700 (PDT) Received: from localhost ([::1]:45514 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT5j-0004m0-NV for importer@patchew.org; Fri, 19 Jul 2019 09:38:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37983) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT44-0005WX-CB for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT43-0007yf-AG for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:48 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:43668) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT43-0007xZ-50; Fri, 19 Jul 2019 09:36:47 -0400 Received: by mail-pg1-x544.google.com with SMTP id f25so14478922pgv.10; Fri, 19 Jul 2019 06:36:47 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.36.37 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:36:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bjo2OWZfzDM9JJnmfjwrjNDcJFN5qjeOYd8x/VH9dn4=; b=YtfmgL6EVs4cIdUfApLpU9UVJmn/kViasswwuBr5/mCCBMVCxBgDesYII6g+CelUI1 E105mcJc/wnPAnRscwLPzdyf4S0XLkoG5w2AKTZnoF24cXzPlOk+c2deFhnf0Vh5p/1l VqZU62PRrd/uKwPyrFZcICPXPU9mOYAm93ng1kUJo41wC0kaWPT1B1Gm/7rU9cNrzwWG 5u93qIpiIwRo7ht+1iCz9eZJUHMNFvxVV1LqmAUh/v3y99OV96zEq/L2Fx9V0+F9mkSn 6T0aoMijRwV6g67XEVcXVpvJv/iNMT+TnVV3gVzXKQ4bDNOBfffQXlK3hUhcqj13VNK6 rZ/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bjo2OWZfzDM9JJnmfjwrjNDcJFN5qjeOYd8x/VH9dn4=; b=SJWSZ/v9mWwzW1CQ9I9x5AQt/VU/NB5ywWYB4+SE03L76K5+W9cnJajoSGL3roxGxI UrW83whDKNsib3lKs4lApQgLLAPFSYDePdDd7vR3kUtiM6rbX+4V250OtsvHv9HkYzbm 32Sh0ZlwCu/QAi8/B/T7Dws6wUJ9S9vsJfEMNa4tYBQJG6PI4qtjk4e3P231Mp7QOs2w fJMKKq5puYyTTr+LPwBy8PcEIsRhWXNpdT0OVz7jnOxVoC/6KIYlIYWXOkM7xXiGJbLm 5htI7lTm4fYNjKC8Ls4zCKfWL+IYNsJqyHX1reePn+eTjhRMqNo/1p91bxIKCAAi7fUM LHFw== X-Gm-Message-State: APjAAAVEHbNAUDpxNBrtK7GeJr4zud9DqWe8Zy8GMiukhSaUIaTpB6QV fT+gzPdOUB9n1gyOOHxkdhRgcJSe6XY= X-Google-Smtp-Source: APXvYqyUfa9pMF6XOkSiy63obYqEWrnFYKRKn+5h7bjYRH6kBfbCRRXqY0teZvL/ZhIH9U+JLDc/8A== X-Received: by 2002:a17:90a:a407:: with SMTP id y7mr58002370pjp.97.1563543404186; Fri, 19 Jul 2019 06:36:44 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:23 +0530 Message-Id: <20190719133530.28688-8-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::544 Subject: [Qemu-devel] [PATCH v6 07/14] blockdev: accept io_uring as option 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi --- blockdev.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/blockdev.c b/blockdev.c index 4d141e9a1f..695b3a803b 100644 --- a/blockdev.c +++ b/blockdev.c @@ -383,13 +383,9 @@ static void extract_common_blockdev_options(QemuOpts *= opts, int *bdrv_flags, } =20 if ((aio =3D qemu_opt_get(opts, "aio")) !=3D NULL) { - if (!strcmp(aio, "native")) { - *bdrv_flags |=3D BDRV_O_NATIVE_AIO; - } else if (!strcmp(aio, "threads")) { - /* this is the default */ - } else { - error_setg(errp, "invalid aio option"); - return; + if (bdrv_parse_aio(aio, bdrv_flags) < 0) { + error_setg(errp, "invalid aio option"); + return; } } } @@ -4574,7 +4570,7 @@ QemuOptsList qemu_common_drive_opts =3D { },{ .name =3D "aio", .type =3D QEMU_OPT_STRING, - .help =3D "host AIO implementation (threads, native)", + .help =3D "host AIO implementation (threads, native, io_uring)= ", },{ .name =3D BDRV_OPT_CACHE_WB, .type =3D QEMU_OPT_BOOL, --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543448; cv=none; d=zoho.com; s=zohoarc; b=GsxwV5ykfz8PJXDy/nPEibeVvgn6j78a0GQlr8mofdTul/Q5+XQOafVPqLQyVbUbOCZaPe5qtrU5kp0CTO092Tw1vBftd54Lg4+1j420ujGXypdCOZjKYlTiXu0tTa6jKCJG9JBj0AkHHwQpUUcGUoKuq4N8mJ1fwjmbQqT0qXY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543448; h=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:ARC-Authentication-Results; bh=21nbGyti/fbtP+74vynC71Q4v/9EpogSHcLqUvH9uKU=; b=OlplRMNPu6xvnhliy7EJJoJw+9KNC5PaJgjtMZKB5xWecICFWN6b6wbCsRijyFtzC+nf1tus+Ys/ET2hu2oVotfu481QH1f/cfpPNZNyoSfZUha+wbGFkfielkZmrwklL+ozMT6BCnT+jGKAqjMP5XJZiB4ohe/93a+RQ2tkpWE= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156354344862686.75459464128971; Fri, 19 Jul 2019 06:37:28 -0700 (PDT) Received: from localhost ([::1]:45448 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4h-0007vz-4H for importer@patchew.org; Fri, 19 Jul 2019 09:37:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38034) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4C-00068j-5I for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT4A-00082Z-PL for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:36:56 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]:46290) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT4A-00081w-Hd; Fri, 19 Jul 2019 09:36:54 -0400 Received: by mail-pl1-x642.google.com with SMTP id c2so15623982plz.13; Fri, 19 Jul 2019 06:36:54 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.36.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:36:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=21nbGyti/fbtP+74vynC71Q4v/9EpogSHcLqUvH9uKU=; b=kVSiUH/QWnGwtdyBbGTw78RxZS28Dta1cj+Mo6L2Y81kPMZMWyxAaP7/LfHJ44Dx3t MQuKAqPFVWk8WxberiwXxWGYNta/9+CpXO0MQfh+ugdi716r1nhNFvJJsmxZ+wnkpMST dpCIM46D6mWjC/BZnXwdywZNjX/beq2YYYGK66KyRy+kIBCOm7rEZ7P235uUHoFcsZ6I NUECXafWkIiBl+h0qoT8VZqLpI7FYDy8prStIqqjLQCxw/MkZxfnhuGRwfFYXM278Kba 731lZwUmY9U+SZlo88mu/mZjqFCQ48Yx8KDNUrwMtybuG9Ck2WE2GuOafbXGm/O8qA49 JCcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=21nbGyti/fbtP+74vynC71Q4v/9EpogSHcLqUvH9uKU=; b=fHiWlFy5AnaCOiHgP9zIjxOrIU+n2+c7EmJDDI/H/VFoI40L6yQGY+Ufq9+mIpLNfc GjDUNhNOqVtrmCvzDQbj0SkE9jhm9FTGKqPgbBlHpKozeWD9jZrXtj3p2V10todTvEwM MbelXeVx3Ds85Ghjb7iET1cPAVPJrGJBcPoKRwK1wJx39K+UqTDMUeIf2fAACGfZkjwG BrLPR61ZtvmeXxtH9DBpOOk3lUZ9b7mvxnMQomVDQrwJtFiehr74pCFf1jmi0ZHiGLLw xFzDLNMxH2Tuj6/HOkHu/89aPHUCjSK4vGpaRjjMQTFjDjSVjBniVavHg9uriFQw0jlN Kzfg== X-Gm-Message-State: APjAAAVvku8PszKn+3YSPWbntgzyCc6oif8rgz57GKHH2j2qPgLawir1 j+AX+LG1pvEkLHmaiDd4oGRMl2524XA= X-Google-Smtp-Source: APXvYqwAusdb8SqSvG+53Je6i0Y82xxhmRse/FcvteKGUd/kMKg9hKa3UTXbdyTw3L3R6OblSPwAgQ== X-Received: by 2002:a17:902:6a87:: with SMTP id n7mr56197396plk.336.1563543413097; Fri, 19 Jul 2019 06:36:53 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:24 +0530 Message-Id: <20190719133530.28688-9-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::642 Subject: [Qemu-devel] [PATCH v6 08/14] block/file-posix.c: extend to use io_uring 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta , Maxim Levitsky Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Maxim Levitsky Reviewed-by: Stefan Hajnoczi --- block/file-posix.c | 99 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 79 insertions(+), 20 deletions(-) diff --git a/block/file-posix.c b/block/file-posix.c index 4479cc7ab4..4aa42f826f 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -156,6 +156,7 @@ typedef struct BDRVRawState { bool has_write_zeroes:1; bool discard_zeroes:1; bool use_linux_aio:1; + bool use_linux_io_uring:1; bool page_cache_inconsistent:1; bool has_fallocate; bool needs_alignment; @@ -425,7 +426,7 @@ static QemuOptsList raw_runtime_opts =3D { { .name =3D "aio", .type =3D QEMU_OPT_STRING, - .help =3D "host AIO implementation (threads, native)", + .help =3D "host AIO implementation (threads, native, io_uring)= ", }, { .name =3D "locking", @@ -484,9 +485,15 @@ static int raw_open_common(BlockDriverState *bs, QDict= *options, goto fail; } =20 - aio_default =3D (bdrv_flags & BDRV_O_NATIVE_AIO) - ? BLOCKDEV_AIO_OPTIONS_NATIVE - : BLOCKDEV_AIO_OPTIONS_THREADS; + if (bdrv_flags & BDRV_O_NATIVE_AIO) { + aio_default =3D BLOCKDEV_AIO_OPTIONS_NATIVE; +#ifdef CONFIG_LINUX_IO_URING + } else if (bdrv_flags & BDRV_O_IO_URING) { + aio_default =3D BLOCKDEV_AIO_OPTIONS_IO_URING; +#endif + } else { + aio_default =3D BLOCKDEV_AIO_OPTIONS_THREADS; + } aio =3D qapi_enum_parse(&BlockdevAioOptions_lookup, qemu_opt_get(opts, "aio"), aio_default, &local_err); @@ -495,7 +502,11 @@ static int raw_open_common(BlockDriverState *bs, QDict= *options, ret =3D -EINVAL; goto fail; } + s->use_linux_aio =3D (aio =3D=3D BLOCKDEV_AIO_OPTIONS_NATIVE); +#ifdef CONFIG_LINUX_IO_URING + s->use_linux_io_uring =3D (aio =3D=3D BLOCKDEV_AIO_OPTIONS_IO_URING); +#endif =20 locking =3D qapi_enum_parse(&OnOffAuto_lookup, qemu_opt_get(opts, "locking"), @@ -559,7 +570,7 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, s->shared_perm =3D BLK_PERM_ALL; =20 #ifdef CONFIG_LINUX_AIO - /* Currently Linux does AIO only for files opened with O_DIRECT */ + /* Currently Linux does AIO only for files opened with O_DIRECT */ if (s->use_linux_aio) { if (!(s->open_flags & O_DIRECT)) { error_setg(errp, "aio=3Dnative was specified, but it requires " @@ -581,6 +592,22 @@ static int raw_open_common(BlockDriverState *bs, QDict= *options, } #endif /* !defined(CONFIG_LINUX_AIO) */ =20 +#ifdef CONFIG_LINUX_IO_URING + if (s->use_linux_io_uring) { + if (!aio_setup_linux_io_uring(bdrv_get_aio_context(bs), errp)) { + error_prepend(errp, "Unable to use io_uring: "); + goto fail; + } + } +#else + if (s->use_linux_io_uring) { + error_setg(errp, "aio=3Dio_uring was specified, but is not support= ed " + "in this build."); + ret =3D -EINVAL; + goto fail; + } +#endif /* !defined(CONFIG_LINUX_IO_URING) */ + s->has_discard =3D true; s->has_write_zeroes =3D true; if ((bs->open_flags & BDRV_O_NOCACHE) !=3D 0) { @@ -1874,21 +1901,25 @@ static int coroutine_fn raw_co_prw(BlockDriverState= *bs, uint64_t offset, return -EIO; =20 /* - * Check if the underlying device requires requests to be aligned, - * and if the request we are trying to submit is aligned or not. - * If this is the case tell the low-level driver that it needs - * to copy the buffer. + * When using O_DIRECT, the request must be aligned to be able to use + * either libaio or io_uring interface. If not fail back to regular th= read + * pool read/write code which emulates this for us if we + * set QEMU_AIO_MISALIGNED. */ - if (s->needs_alignment) { - if (!bdrv_qiov_is_aligned(bs, qiov)) { - type |=3D QEMU_AIO_MISALIGNED; + if (s->needs_alignment && !bdrv_qiov_is_aligned(bs, qiov)) { + type |=3D QEMU_AIO_MISALIGNED; +#ifdef CONFIG_LINUX_IO_URING + } else if (s->use_linux_io_uring) { + LuringState *aio =3D aio_get_linux_io_uring(bdrv_get_aio_context(b= s)); + assert(qiov->size =3D=3D bytes); + return luring_co_submit(bs, aio, s->fd, offset, qiov, type); +#endif #ifdef CONFIG_LINUX_AIO - } else if (s->use_linux_aio) { - LinuxAioState *aio =3D aio_get_linux_aio(bdrv_get_aio_context(= bs)); - assert(qiov->size =3D=3D bytes); - return laio_co_submit(bs, aio, s->fd, offset, qiov, type); + } else if (s->use_linux_aio) { + LinuxAioState *aio =3D aio_get_linux_aio(bdrv_get_aio_context(bs)); + assert(qiov->size =3D=3D bytes); + return laio_co_submit(bs, aio, s->fd, offset, qiov, type); #endif - } } =20 acb =3D (RawPosixAIOData) { @@ -1924,24 +1955,36 @@ static int coroutine_fn raw_co_pwritev(BlockDriverS= tate *bs, uint64_t offset, =20 static void raw_aio_plug(BlockDriverState *bs) { + BDRVRawState __attribute__((unused)) *s =3D bs->opaque; #ifdef CONFIG_LINUX_AIO - BDRVRawState *s =3D bs->opaque; if (s->use_linux_aio) { LinuxAioState *aio =3D aio_get_linux_aio(bdrv_get_aio_context(bs)); laio_io_plug(bs, aio); } #endif +#ifdef CONFIG_LINUX_IO_URING + if (s->use_linux_io_uring) { + LuringState *aio =3D aio_get_linux_io_uring(bdrv_get_aio_context(b= s)); + luring_io_plug(bs, aio); + } +#endif } =20 static void raw_aio_unplug(BlockDriverState *bs) { + BDRVRawState __attribute__((unused)) *s =3D bs->opaque; #ifdef CONFIG_LINUX_AIO - BDRVRawState *s =3D bs->opaque; if (s->use_linux_aio) { LinuxAioState *aio =3D aio_get_linux_aio(bdrv_get_aio_context(bs)); laio_io_unplug(bs, aio); } #endif +#ifdef CONFIG_LINUX_IO_URING + if (s->use_linux_io_uring) { + LuringState *aio =3D aio_get_linux_io_uring(bdrv_get_aio_context(b= s)); + luring_io_unplug(bs, aio); + } +#endif } =20 static int raw_co_flush_to_disk(BlockDriverState *bs) @@ -1961,14 +2004,20 @@ static int raw_co_flush_to_disk(BlockDriverState *b= s) .aio_type =3D QEMU_AIO_FLUSH, }; =20 +#ifdef CONFIG_LINUX_IO_URING + if (s->use_linux_io_uring) { + LuringState *aio =3D aio_get_linux_io_uring(bdrv_get_aio_context(b= s)); + return luring_co_submit(bs, aio, s->fd, 0, NULL, QEMU_AIO_FLUSH); + } +#endif return raw_thread_pool_submit(bs, handle_aiocb_flush, &acb); } =20 static void raw_aio_attach_aio_context(BlockDriverState *bs, AioContext *new_context) { + BDRVRawState __attribute__((unused)) *s =3D bs->opaque; #ifdef CONFIG_LINUX_AIO - BDRVRawState *s =3D bs->opaque; if (s->use_linux_aio) { Error *local_err; if (!aio_setup_linux_aio(new_context, &local_err)) { @@ -1978,6 +2027,16 @@ static void raw_aio_attach_aio_context(BlockDriverSt= ate *bs, } } #endif +#ifdef CONFIG_LINUX_IO_URING + if (s->use_linux_io_uring) { + Error *local_err; + if (!aio_setup_linux_io_uring(new_context, &local_err)) { + error_reportf_err(local_err, "Unable to use linux io_uring, " + "falling back to thread pool: "); + s->use_linux_io_uring =3D false; + } + } +#endif } =20 static void raw_close(BlockDriverState *bs) --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543456; cv=none; d=zoho.com; s=zohoarc; b=XpDM7s+xsaOWbm76arLmTXEJJPcDiszGZxTmyU1Xe/FQ2d55D/LjhbItkK9/DAXgy5Qz1mBUNs7woW7+r3nMlNIXuo2F8AYohPyLrLJ5FgyCUBv9MunHZBoZS3AlUhUc2DZzJYN26JT7SvpjlBs51Wpb/z+1YL2IPomp1a9nyqw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543456; h=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:ARC-Authentication-Results; bh=qY0xo2hXixt1PLBpK6m4GAmm/UqdRAy517OvZvjaF8o=; b=k3NEW5d2oHMZHDtUc+P1TJky93wwNuHbVBkJY7HwYBWa7Gtm7PEy60OxuHKHyMhBo3CejjReRiaxAG4THo77W08NAtoLKznnjjMsIJiphFMproeseYXGxeGLp9DZ7fWW0BKDbA0cz4RQZFuip5XjSju0nx4vdI3MMhpU+ypynm0= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156354345663288.52961913669571; Fri, 19 Jul 2019 06:37:36 -0700 (PDT) Received: from localhost ([::1]:45454 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4p-0008SZ-6R for importer@patchew.org; Fri, 19 Jul 2019 09:37:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38078) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4J-0006gP-Ib for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT4I-00085U-3w for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:03 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]:45343) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT4H-00085I-UJ; Fri, 19 Jul 2019 09:37:02 -0400 Received: by mail-pl1-x642.google.com with SMTP id y8so15650626plr.12; Fri, 19 Jul 2019 06:37:01 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.36.53 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:37:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qY0xo2hXixt1PLBpK6m4GAmm/UqdRAy517OvZvjaF8o=; b=CWHz5H07nqKkrxon9+xt0jHVklP7fDp9G0UWCCX/dVPb/ZhBSpIGRf4+w2HfPbGkFk cIcOakCtrnhbuclspP80wtDBoi57GW8DUOVj346qiLXSXMI6R3p5TMIQe5cNXrgiBWim YcMahJIdxXo8wRmZzYG1VhBUA4Vk9hk+8H/dUU69iVs3UMdbwq3yiIoNK/HDl/CS9ghN MJYlNIj7Rn+kNILv2EE7muOdN2bFV2f9Noo+6A+SSgayPxJPeFPeSAwig5Ay+W2zDfsF CuQ1W0xdw94l4wRhRtkDWdK9wj5pVMPmaud/4x/GvRDxYuTYOKoBqW9GzaCTDxLO2DLD g+AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qY0xo2hXixt1PLBpK6m4GAmm/UqdRAy517OvZvjaF8o=; b=Mykt5QU/abxdBD3pqn2E6YjvDvSBkKgxJGo3C4njCgQu0ebIevgjW7s5GTVzm8Ih5P uBJv/NxRddF39gaZtoHO9U4V7HMDogYFbrJ+funo2khgv4cC+dG5NNXx/NrS+qMfTezF YOds5PDtnRr3WhFqo6Sea0gLNjxelomnujAFX++gZ4f2wc+93AO5T6DlJMS6VFoEsCxx slsc3gNyDVk6opTLJSKAn+PjVh+6OkjnMQKwXmkh4bcM3WFMgAQr1QkLfbAGH4cmpYQi vn3N5gavcP3xI4swURmqOdT0LMJPSxDDjeGU3LnIjXjLr1aPoFqX0OKY/BA0/Hv+v/Mx Xl4g== X-Gm-Message-State: APjAAAW1JkdZOeb3yqJZx4EylZfEtcjfEFw1HjZyZahjqA7t887EEGn+ SQojIObAiX+4McMFi/2WMrt8k6Ea3Mk= X-Google-Smtp-Source: APXvYqxyj7FYCQhbr9UJIVP8pbheLFPj+aU+uOLmFQiCq6ZBzLeda8omdmABfLcwvjOfGfIF8JZF0w== X-Received: by 2002:a17:902:b70e:: with SMTP id d14mr56504036pls.309.1563543420769; Fri, 19 Jul 2019 06:37:00 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:25 +0530 Message-Id: <20190719133530.28688-10-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::642 Subject: [Qemu-devel] [PATCH v6 09/14] block: add trace events for io_uring 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi --- block/io_uring.c | 22 +++++++++++++++++++--- block/trace-events | 12 ++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/block/io_uring.c b/block/io_uring.c index e8dbc388a6..e9c1dc1dc7 100644 --- a/block/io_uring.c +++ b/block/io_uring.c @@ -17,6 +17,7 @@ #include "block/raw-aio.h" #include "qemu/coroutine.h" #include "qapi/error.h" +#include "trace.h" =20 #define MAX_EVENTS 128 =20 @@ -93,6 +94,8 @@ static void luring_resubmit_short_read(LuringState *s, Lu= ringAIOCB *luringcb, QEMUIOVector *resubmit_qiov; size_t remaining; =20 + trace_luring_resubmit_short_read(s, luringcb, nread); + /* Update read position */ luringcb->total_read =3D nread; remaining =3D luringcb->qiov->size - luringcb->total_read; @@ -163,6 +166,7 @@ static void luring_process_completions(LuringState *s) =20 /* Change counters one-by-one because we can be nested. */ s->io_q.in_flight--; + trace_luring_process_completion(s, luringcb, ret); =20 /* total_read is non-zero only for resubmitted read requests */ total_bytes =3D ret + luringcb->total_read; @@ -263,6 +267,7 @@ static int ioq_submit(LuringState *s) QSIMPLEQ_REMOVE_HEAD(&s->io_q.sq_overflow, next); } ret =3D io_uring_submit(&s->ring); + trace_luring_io_uring_submit(s, ret); /* Prevent infinite loop if submission is refused */ if (ret <=3D 0) { if (ret =3D=3D -EAGAIN) { @@ -287,12 +292,15 @@ static int ioq_submit(LuringState *s) =20 void luring_io_plug(BlockDriverState *bs, LuringState *s) { + trace_luring_io_plug(s); s->io_q.plugged++; } =20 void luring_io_unplug(BlockDriverState *bs, LuringState *s) { assert(s->io_q.plugged); + trace_luring_io_unplug(s, s->io_q.blocked, s->io_q.plugged, + s->io_q.in_queue, s->io_q.in_flight); if (--s->io_q.plugged =3D=3D 0 && !s->io_q.blocked && s->io_q.in_queue > 0) { ioq_submit(s); @@ -313,6 +321,7 @@ void luring_io_unplug(BlockDriverState *bs, LuringState= *s) static int luring_do_submit(int fd, LuringAIOCB *luringcb, LuringState *s, uint64_t offset, int type) { + int ret; struct io_uring_sqe *sqes =3D &luringcb->sqeq; =20 switch (type) { @@ -336,11 +345,14 @@ static int luring_do_submit(int fd, LuringAIOCB *luri= ngcb, LuringState *s, =20 QSIMPLEQ_INSERT_TAIL(&s->io_q.sq_overflow, luringcb, next); s->io_q.in_queue++; - + trace_luring_do_submit(s, s->io_q.blocked, s->io_q.plugged, + s->io_q.in_queue, s->io_q.in_flight); if (!s->io_q.blocked && (!s->io_q.plugged || s->io_q.in_flight + s->io_q.in_queue >=3D MAX_EVENTS)) { - return ioq_submit(s); + ret =3D ioq_submit(s); + trace_luring_do_submit_done(s, ret); + return ret; } return 0; } @@ -355,8 +367,10 @@ int coroutine_fn luring_co_submit(BlockDriverState *bs= , LuringState *s, int fd, .qiov =3D qiov, .is_read =3D (type =3D=3D QEMU_AIO_READ), }; - + trace_luring_co_submit(bs, s, &luringcb, fd, offset, qiov ? qiov->size= : 0, + type); ret =3D luring_do_submit(fd, &luringcb, s, offset, type); + if (ret < 0) { return ret; } @@ -388,6 +402,7 @@ LuringState *luring_init(Error **errp) int rc; LuringState *s; s =3D g_new0(LuringState, 1); + trace_luring_init_state(s, sizeof(*s)); struct io_uring *ring =3D &s->ring; rc =3D io_uring_queue_init(MAX_EVENTS, ring, 0); if (rc < 0) { @@ -405,4 +420,5 @@ void luring_cleanup(LuringState *s) { io_uring_queue_exit(&s->ring); g_free(s); + trace_luring_cleanup_state(s); } diff --git a/block/trace-events b/block/trace-events index d724df0117..5060afb2f7 100644 --- a/block/trace-events +++ b/block/trace-events @@ -60,6 +60,18 @@ qmp_block_stream(void *bs) "bs %p" file_paio_submit(void *acb, void *opaque, int64_t offset, int count, int t= ype) "acb %p opaque %p offset %"PRId64" count %d type %d" file_copy_file_range(void *bs, int src, int64_t src_off, int dst, int64_t = dst_off, int64_t bytes, int flags, int64_t ret) "bs %p src_fd %d offset %"P= RIu64" dst_fd %d offset %"PRIu64" bytes %"PRIu64" flags %d ret %"PRId64 =20 +#io_uring.c +luring_init_state(void *s, size_t size) "s %p size %zu" +luring_cleanup_state(void *s) "%p freed" +luring_io_plug(void *s) "LuringState %p plug" +luring_io_unplug(void *s, int blocked, int plugged, int queued, int inflig= ht) "LuringState %p blocked %d plugged %d queued %d inflight %d" +luring_do_submit(void *s, int blocked, int plugged, int queued, int inflig= ht) "LuringState %p blocked %d plugged %d queued %d inflight %d" +luring_do_submit_done(void *s, int ret) "LuringState %p submitted to kerne= l %d" +luring_co_submit(void *bs, void *s, void *luringcb, int fd, uint64_t offse= t, size_t nbytes, int type) "bs %p s %p luringcb %p fd %d offset %" PRId64 = " nbytes %zd type %d" +luring_process_completion(void *s, void *aiocb, int ret) "LuringState %p l= uringcb %p ret %d" +luring_io_uring_submit(void *s, int ret) "LuringState %p ret %d" +luring_resubmit_short_read(void *s, void *luringcb, int nread) "LuringStat= e %p luringcb %p nread + # qcow2.c qcow2_writev_start_req(void *co, int64_t offset, int bytes) "co %p offset = 0x%" PRIx64 " bytes %d" qcow2_writev_done_req(void *co, int ret) "co %p ret %d" --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543529; cv=none; d=zoho.com; s=zohoarc; b=Q9ktackyNNEgwkAfWrVBn1ffAcX/fEl+owLLFbn5lyxmw710t4Vd71ybtLXxDe59wIe4cXslPAZviJJmuRndVKULjOTf3F9VM42uYw2jXk+z4K3MCt5rVclQ8h3xNrKpag6EfEEU+zXDbmJOv3WeiZtVGED8Z3++uCzrxdI2ueU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543529; h=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:ARC-Authentication-Results; bh=K0d0PCOxvKT348YcfiEgoxDIJrmae1+DAY9ThSTRtEQ=; b=JcP63B+YBcboU/dXViIrhnB1TylodVeK8U3ONSnn43PNNHBROmu6M3wRjYRFvXli4HgiycQ1iWV8ff7jpdFLuX2Ft9jJXHaZujlT8bwRkFDje6WrFR37RWzeqtgT/f6Jn67NBBxwKiDf6IRFXZJ01GPm5fg/FtKpBc8oGbEhV6Y= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543529182782.7674099121615; Fri, 19 Jul 2019 06:38:49 -0700 (PDT) Received: from localhost ([::1]:45528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT60-0006DM-9Y for importer@patchew.org; Fri, 19 Jul 2019 09:38:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38107) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4Q-0007CY-6r for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT4P-00089J-9b for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:10 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:37383) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT4P-00088u-3f; Fri, 19 Jul 2019 09:37:09 -0400 Received: by mail-pg1-x543.google.com with SMTP id i70so3746666pgd.4; Fri, 19 Jul 2019 06:37:09 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.37.01 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:37:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=K0d0PCOxvKT348YcfiEgoxDIJrmae1+DAY9ThSTRtEQ=; b=r/QYJuDj0YIXBPsXgJuy9Aw3F1BUydqk4wwADtMiGNE6TLNLV4bR8NHkY53ngd2lzy vpe+F0EEvnXPlkKGs3kS4d/TUtWD7iX+29/kPzwvVc81MGjeFjgXdh8s8jvx0MWUpPxP uo1z+Amb8KNpFgRQ8WtQbb54M5zoW9xkeCOlFCgRkW9L2Eph0YT6MivRfxabuYrLhW0R TQXYg47XPgmPmfkyUGegglb44Y1teUmRS1gnv4ukHoRSVwUypWIxad4xTLKG8vyo/bQV +/tl3pL17tlRKsZIT0Yc2ORFlSa6Cfq0m42N4T19MWkwXMEfWmjylNdZecjfb94rjkaW q7HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=K0d0PCOxvKT348YcfiEgoxDIJrmae1+DAY9ThSTRtEQ=; b=I4hhh8C7tSIm7T9bHfi1/swozx9HbBbWv8NjiDfZgBU8ZjV3TsoR+r3/U8HLfpVgsy VFYwkpYI9KqeuaJtitf2VHxvtGfTyPiFCkbPusbZSRqw/E2bTWgRWZUiutQpDHi3sWz4 rplofubDW2KxF7e/2/3JIa/UaW53SOTkum9KIdX5V4voXNadHpaRDuId0DC2a/icXldq PjK5ePKp56jUVgNfVj9cIWBYybXV8sX1UjbTC3mMVCtcCKfF6GSLwmPPeofI2v0j9RTH 4p0qaE9yUGUwvJYdJ+uItlSmdFkXOAb67HZ3h89DxGIT4gR8abtiLy/vPpUFYqHe9wz7 v2mw== X-Gm-Message-State: APjAAAWHghuZK9SMzDiplTJSoBkzCVScm5fLqV/9OMgpRAYjQ2S4E11S TJ6EBN1jjnUDYQY5uDqbKjpeIu9go1A= X-Google-Smtp-Source: APXvYqzpV8fgokXY1y1thuPBE+F1iSLIIxgoSWFVE5AwUyW1pJTSqG+tOOyZZuiBJV/Bxt9IRc5igw== X-Received: by 2002:a17:90a:1c1:: with SMTP id 1mr58096780pjd.72.1563543427845; Fri, 19 Jul 2019 06:37:07 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:26 +0530 Message-Id: <20190719133530.28688-11-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::543 Subject: [Qemu-devel] [PATCH v6 10/14] block/io_uring: adds userspace completion polling 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi --- block/io_uring.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/block/io_uring.c b/block/io_uring.c index e9c1dc1dc7..de2a037151 100644 --- a/block/io_uring.c +++ b/block/io_uring.c @@ -237,6 +237,21 @@ static void qemu_luring_completion_cb(void *opaque) luring_process_completions_and_submit(s); } =20 +static bool qemu_luring_poll_cb(void *opaque) +{ + LuringState *s =3D opaque; + struct io_uring_cqe *cqes; + + if (io_uring_peek_cqe(&s->ring, &cqes) =3D=3D 0) { + if (cqes) { + luring_process_completions_and_submit(s); + return true; + } + } + + return false; +} + static void ioq_init(LuringQueue *io_q) { QSIMPLEQ_INIT(&io_q->sq_overflow); @@ -394,7 +409,7 @@ void luring_attach_aio_context(LuringState *s, AioConte= xt *new_context) s->aio_context =3D new_context; s->completion_bh =3D aio_bh_new(new_context, qemu_luring_completion_bh= , s); aio_set_fd_handler(s->aio_context, s->ring.ring_fd, false, - qemu_luring_completion_cb, NULL, NULL, s); + qemu_luring_completion_cb, NULL, qemu_luring_poll_c= b, s); } =20 LuringState *luring_init(Error **errp) --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543495; cv=none; d=zoho.com; s=zohoarc; b=dcRRwYyx7ihXSuDdjPYXg1P3seW7+G1UiAJh/db2cuEbUqoGi8U8lZaUr5PUn8Nclh3fJ2A7hcMwufHvx5wDLkpSYKOV1NcbF2J4PwOzhj1j74+HSt41It7P7X/cvTpCfHJ46l4XZ/VP2Qf0CMuD0f1dEhiUlRE5TNoc6V0VmeE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543495; h=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:ARC-Authentication-Results; bh=jzhlY8te3PlNHDmc9x8zhHaloKwuy+F9m+jxMy+Rp1s=; b=L22rm9/GL0fQdDrqIlnGIzZ6ZpZp9pndWYU4d9o5+ko0nm62Wyo5Bm5ITUmi5r6AfEdYoVLlk1Q0mIAVMHMh0bRcDBlu32mUBgfQCTDyCFve3GubUsLw2bNUNXW7YbOI+H3e/152uMMgiLk5Pf2ImSyVlGT6cKqnDVcXsgaLBIc= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543495510635.4920688242179; Fri, 19 Jul 2019 06:38:15 -0700 (PDT) Received: from localhost ([::1]:45492 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT5S-0003CA-8P for importer@patchew.org; Fri, 19 Jul 2019 09:38:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38164) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4Y-0007qy-J1 for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT4X-0008FB-DS for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:18 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:45346) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT4X-0008EZ-3u; Fri, 19 Jul 2019 09:37:17 -0400 Received: by mail-pl1-x643.google.com with SMTP id y8so15650929plr.12; Fri, 19 Jul 2019 06:37:17 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.37.08 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:37:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jzhlY8te3PlNHDmc9x8zhHaloKwuy+F9m+jxMy+Rp1s=; b=SOQdnhvHIuhpKDXnQoFTnbkSwQX81px8IoHFjnbtIPVKdeLC5rtwORFlTNwJog6omH T3Ln0de8V9W/T1kijbghNOKqomb/freI10FvwBb49+Dr3SsOavOM1OeI80QwxwSaADsO cFv6dQms6FtY+BWDSCWhg7ENqWY7fPAizB9Nt+bSfj/VJ9JGKbzM/5Q8rUN7nlVX2pdC TSHcqRcpDD3xBHMCOjcU4Ip2NIJRI9q6Fmg7FeJc9wcuJcKzE7gWlR3zrCwxNF6MBYB/ 7hFHjC593RNsqHF4Mzb4DtjZZ36xmYDZZ5Tk1f6SdWZSv/xfNTsHxXcZjfpBdQiSmm3O H/GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jzhlY8te3PlNHDmc9x8zhHaloKwuy+F9m+jxMy+Rp1s=; b=k8KDpaedlfdnMXpkeYIalU9ofj6OAy33cr8E5hhEjwKT2OAMgUMSCWC5kW6zooH+oS MDJwjWF1dPWIGR6IF7fXUGQiACBU939DrrFV8Cawks/bZnIUlhiesSZUHPhwC/Poth84 KrN4LkxQMxzbV6OdRN8TXumttIIolhEHslUyeuRqq3WJhM5C+lgzu+2627hV7JGVCxLD LwWAEDk6PP8v6ZJPYRoOejf6eU7Wj1NkRZ+Gf5VKEy5XbvChuaXnckgdzu7g98umYIA9 axM7Wi0C5VpfWm34Eg8AHKXM/A/Pojd3f+/0fq3lO1Pqq+CBJWVslQDQ0vlU10gyAfKW 7X4A== X-Gm-Message-State: APjAAAXw1GEd4ZsOxGg521w8+V8XCbIjJqn9saswWr2KUSv/IaElqxy7 Qs+i2juHDlqB1Ol16Fwbk1zsODZB9/8= X-Google-Smtp-Source: APXvYqzFhnF9adiDSbwGQUyWBVF19V7Y77AaR6br4mVELUBX7Q2ufUjZs0vP8KhL1ZE6G6nKcYiWNg== X-Received: by 2002:a17:902:9689:: with SMTP id n9mr57823441plp.241.1563543435867; Fri, 19 Jul 2019 06:37:15 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:27 +0530 Message-Id: <20190719133530.28688-12-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::643 Subject: [Qemu-devel] [PATCH v6 11/14] qemu-io: adds option to use aio engine 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Use -i AIOMODE instead of -k. Signed-off-by: Aarushi Mehta --- qemu-io.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/qemu-io.c b/qemu-io.c index f64eca6940..3cee06248e 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -130,7 +130,7 @@ static void open_help(void) " -C, -- use copy-on-read\n" " -n, -- disable host cache, short for -t none\n" " -U, -- force shared permissions\n" -" -k, -- use kernel AIO implementation (on Linux only)\n" +" -i, -- use AIO mode (threads, native or io_uring)" " -t, -- use the given cache mode for the image\n" " -d, -- use the given discard mode for the image\n" " -o, -- options to be given to the block driver" @@ -187,9 +187,6 @@ static int open_f(BlockBackend *blk, int argc, char **a= rgv) case 'r': readonly =3D 1; break; - case 'k': - flags |=3D BDRV_O_NATIVE_AIO; - break; case 't': if (bdrv_parse_cache_mode(optarg, &flags, &writethrough) < 0) { error_report("Invalid cache option: %s", optarg); @@ -204,6 +201,13 @@ static int open_f(BlockBackend *blk, int argc, char **= argv) return -EINVAL; } break; + case 'i': + if (bdrv_parse_aio(optarg, &flags) < 0) { + error_report("Invalid aio option: %s", optarg); + qemu_opts_reset(&empty_opts); + return -EINVAL; + } + break; case 'o': if (imageOpts) { printf("--image-opts and 'open -o' are mutually exclusive\= n"); @@ -291,7 +295,7 @@ static void usage(const char *name) " -n, --nocache disable host cache, short for -t none\n" " -C, --copy-on-read enable copy-on-read\n" " -m, --misalign misalign allocations for O_DIRECT\n" -" -k, --native-aio use kernel AIO implementation (on Linux only)\n" +" -i, --aio=3DMODE use AIO mode (threads, native or io_uring)\n" " -t, --cache=3DMODE use the given cache mode for the image\n" " -d, --discard=3DMODE use the given discard mode for the image\n" " -T, --trace [[enable=3D]][,events=3D][,file=3D]\n" @@ -489,7 +493,7 @@ static QemuOptsList file_opts =3D { int main(int argc, char **argv) { int readonly =3D 0; - const char *sopt =3D "hVc:d:f:rsnCmkt:T:U"; + const char *sopt =3D "hVc:d:f:rsnCmit:T:U"; const struct option lopt[] =3D { { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, 'V' }, @@ -500,7 +504,7 @@ int main(int argc, char **argv) { "nocache", no_argument, NULL, 'n' }, { "copy-on-read", no_argument, NULL, 'C' }, { "misalign", no_argument, NULL, 'm' }, - { "native-aio", no_argument, NULL, 'k' }, + { "aio", required_argument, NULL, 'i' }, { "discard", required_argument, NULL, 'd' }, { "cache", required_argument, NULL, 't' }, { "trace", required_argument, NULL, 'T' }, @@ -565,8 +569,11 @@ int main(int argc, char **argv) case 'm': qemuio_misalign =3D true; break; - case 'k': - flags |=3D BDRV_O_NATIVE_AIO; + case 'i': + if (bdrv_parse_aio(optarg, &flags) < 0) { + error_report("Invalid aio option: %s", optarg); + exit(1); + } break; case 't': if (bdrv_parse_cache_mode(optarg, &flags, &writethrough) < 0) { --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543481; cv=none; d=zoho.com; s=zohoarc; b=DleRzatRAjVDHsS3963gDuW/cgChKf/2f6tb99MG5I41OAl1gSVQHDEatjJXz8f2E6biFYaA4JYPJhhUnzk1VBT7kBqng8XjOqSE36Rc77YZ3osIvxyD5pH8Ae7NQhvcMjj1AKMSLSzFtn8DRGai0sVLd84K+x9hPF2DJBoPEUA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543481; h=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:ARC-Authentication-Results; bh=q8EyZO9gyjUrvwScd/MsjvWo1FHMNN/dKk0uX4kabR0=; b=NY2lfPXwMj99UqcLxpLGgHR5G3UdwXBi3n0JaREwW6Gtvp2sb1TlntvcaWYV3fhNvV5JqThuJLlds4dAurqtFX0pNe0A69Bhx2lkNlVpoHOux6a7Qos08bPA6YDTT/eHJ3nnxFBh1SGEOjpoieEmWB1pOQpfaipxNFKYAr4YR4g= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543481760443.815434993468; Fri, 19 Jul 2019 06:38:01 -0700 (PDT) Received: from localhost ([::1]:45482 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT5E-0001x8-BB for importer@patchew.org; Fri, 19 Jul 2019 09:38:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38232) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4f-0008QX-UA for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT4e-0008JT-UU for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:25 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:37066) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT4e-0008J5-PC; Fri, 19 Jul 2019 09:37:24 -0400 Received: by mail-pl1-x643.google.com with SMTP id b3so15658540plr.4; Fri, 19 Jul 2019 06:37:24 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.37.16 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:37:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=q8EyZO9gyjUrvwScd/MsjvWo1FHMNN/dKk0uX4kabR0=; b=jsKSHjHYUJToEkxrNNS9GKFdQmW6SPJcCxn0QHuPWhfHMX5+bvcyQwf89TpXJKyM8i V15/L4cLXYpSGvgZ2RxRINHvWJnxfZfRtTsZDREJu2/cxh68sjUu5KbMSuDyfow9m3TU 78HvI7Vga/dHLPEDguXMd9+IvTt/VOiTdIk6leE68FSdVAZU11/IZagBgfYKgpa6jrlr AaUh5NNCs0kAk5p3NWfvIrZSlhdAhkzhzh88EW2qWUDRkglbd+WDFBabAOCZWiRAVDSi Wff0jqQpwre44NTYvnXefSSE2etJXaC+P7EsYEP9ECWcMeYU4dF3MACLknQDXbdFV8JY pg3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q8EyZO9gyjUrvwScd/MsjvWo1FHMNN/dKk0uX4kabR0=; b=RAobQ4VKXXRnRGMpssa+uHTCqURgFT9DSSuQ2YQvvUsbY4/NByyykxnOIqMyQEyrsI 8tl4uqRZYSeBkm+/ZiuSpAuf1MZWUBQiZhtXVzoRnXu83jsWnjiYZhv22AkJDQcVV03t GF/ot7shdJFkdyNbOI9YxkM2ktAz0sYO1WoRECzZuNPPZ7Kl4HUJGyBeRLNw6rPgtmNU 7OAWE1kcanRb3fHIJi97e80bOEBxSC6KYGGqykmXZK4Xoxyv3Q6lrwl/TASz7LSV6/LK YTTf0Z6LeuRr5etpGDzCGiuzpjSIwaHSgeGLJY5h/X+vnHpW+fAMaOe7Zv7lsZ6CpwDv tuzA== X-Gm-Message-State: APjAAAULtRW2rMD2RECf22UFa6QmGydZKv8Hb/DgFF29qUUSbTmiQOgj KqzfAURK5z94NwEXCl4RngnBuHRqDdo= X-Google-Smtp-Source: APXvYqx3eOBYOiwgOCXt6p02ufwJtiLpoogdAPHeU9/pfi2NFZPirEdoWYHZbDT+acrIM5dWiUePbQ== X-Received: by 2002:a17:902:fe93:: with SMTP id x19mr53009004plm.77.1563543443603; Fri, 19 Jul 2019 06:37:23 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:28 +0530 Message-Id: <20190719133530.28688-13-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::643 Subject: [Qemu-devel] [PATCH v6 12/14] qemu-img: adds option to use aio engine 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Use -i AIOMODE instead of -n. Signed-off-by: Aarushi Mehta --- qemu-img.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/qemu-img.c b/qemu-img.c index 79983772de..b7a962afff 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -4192,7 +4192,7 @@ static int img_bench(int argc, char **argv) {"force-share", no_argument, 0, 'U'}, {0, 0, 0, 0} }; - c =3D getopt_long(argc, argv, ":hc:d:f:no:qs:S:t:wU", long_options= , NULL); + c =3D getopt_long(argc, argv, ":hc:d:f:io:qs:S:t:wU", long_options= , NULL); if (c =3D=3D -1) { break; } @@ -4232,8 +4232,13 @@ static int img_bench(int argc, char **argv) case 'f': fmt =3D optarg; break; - case 'n': - flags |=3D BDRV_O_NATIVE_AIO; + case 'i': + ret =3D bdrv_parse_aio(optarg, &flags); + if (ret < 0) { + error_report("Invalid aio option: %s", optarg); + ret =3D -1; + goto out; + } break; case 'o': { --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543544; cv=none; d=zoho.com; s=zohoarc; b=YWRWXyY+EguN1zS4byErCy0IPJg9ILVCUnvzbpISYRGTmcn6lBDoScGPTQ7nQ+RyCD1JF9RATAzHJ2Epy41Q2SISeBfaW02ua3vPB2I2V0Z6QThx3UVAdSylGGLxsLBYDQL3+ROJQHpMfDAvdOtdB0t+g6/9WztIAQkW/E9iJKs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543544; h=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:ARC-Authentication-Results; bh=5PwunZdX3lYy6VRIRqTKHiVhaugi0Tx2+fSQwVilljI=; b=XsYk3W8uXZ+IQcug5JjPtcXdX57fJ64wFzBV9y5c+HIgFmR3vkae72lqb4NzA48WoOvg2tVmi2/K7R3by24vnRAikNkdhl+BMDHDdKFisk/BNjV/OKKKr6uXomzKsjmyJ9DFgOOej3MAeEuV3uAd7lUpioZqLs+w2Xq913vfg1U= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156354354470112.074088371278776; Fri, 19 Jul 2019 06:39:04 -0700 (PDT) Received: from localhost ([::1]:45538 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT6E-0007C1-Pv for importer@patchew.org; Fri, 19 Jul 2019 09:39:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38269) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4n-0000Yq-2N for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT4m-0008NG-3v for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:32 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:35145) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT4l-0008N0-Ur; Fri, 19 Jul 2019 09:37:32 -0400 Received: by mail-pg1-x543.google.com with SMTP id s1so8181674pgr.2; Fri, 19 Jul 2019 06:37:31 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.37.23 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:37:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5PwunZdX3lYy6VRIRqTKHiVhaugi0Tx2+fSQwVilljI=; b=MxLXoUR/o/2O1ZOFubEXpebb2iTccPddcbT9q7Z+TaZblktoGUafweLIbcI90VYgIX 0i6V6aeOTMZl9zmW99/Z/bNZYVevUSU2QhQ3zaxyYRhllWIZ/CoOQ21Wy4v5Vp8URZYB XUsukgXgcrYZcua+C1z1nGL0smZ6P2iexzFu6/TiW/di5mbsoioX45ZL1pJf+vOIySkP Zj6SdZr/0IK6M23WJna7CePyfLj7DDiC9ZS1mRRWP4imhy4SSXOUP5DaRyvxkWQiDAVR UpSEiK5kqC7+a504X0fPQA4OIG85LtfU8VgUd9lINrfHaJrAlFZLGOyGMv3D+NGbJwfs 2R5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5PwunZdX3lYy6VRIRqTKHiVhaugi0Tx2+fSQwVilljI=; b=VbN6aOeEeUu9KDRLVdU7J60/ezN1A8BYJgmMFMyEprzjUmBhNb43yQQbtBIc3POefx o3TXZ5VvOCfH10ZVJ8emHwdbKcN+GwdwtNzDJS9mvX4vOO1LapZUZFsALl27NUctiXVz +nkRVOwDeMhwQOlPtDreHAWT3pZ5BNDay2S0lqtrIGRhTWrnva8xFC4vEZ5L4vkGT09I cU0229WoOwg+h2g3YhHiAcnRN88ZPtiEAt2HqylKN+zeVJgfFsW6e/ClwyLEtY9+rECI PRxEXJ6BIrGfAzappHJqp/wM0CHzdZjyFP0UJQtDoEGdhya7eGFOiLhqYqzmzzDLm02J J7qA== X-Gm-Message-State: APjAAAU3RYo/T064rPfFWjm0cyXbU102xVHwHl2oKfEB7hIooDBo7A28 aW62MX3qTpxSwSvn4OkMOgxHW3xsqDU= X-Google-Smtp-Source: APXvYqwa369re8m8ISWJL906oMmy5H5+CRovGcnHFt1OOeLZehDbM1okot/WH4i8+0vooYfZH0k2eA== X-Received: by 2002:a17:90a:ab01:: with SMTP id m1mr55682783pjq.69.1563543450786; Fri, 19 Jul 2019 06:37:30 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:29 +0530 Message-Id: <20190719133530.28688-14-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::543 Subject: [Qemu-devel] [PATCH v6 13/14] qemu-nbd: adds option for aio engines 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta Reviewed-by: Stefan Hajnoczi --- qemu-nbd.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/qemu-nbd.c b/qemu-nbd.c index a8cb39e510..e5a71b3501 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -135,7 +135,7 @@ static void usage(const char *name) " '[ID_OR_NAME]'\n" " -n, --nocache disable host cache\n" " --cache=3DMODE set cache mode (none, writeback, ...)\n" -" --aio=3DMODE set AIO mode (native or threads)\n" +" --aio=3DMODE set AIO mode (native, io_uring or threads)\= n" " --discard=3DMODE set discard mode (ignore, unmap)\n" " --detect-zeroes=3DMODE set detect-zeroes mode (off, on, unmap)\n" " --image-opts treat FILE as a full set of image options\n" @@ -718,13 +718,9 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } seen_aio =3D true; - if (!strcmp(optarg, "native")) { - flags |=3D BDRV_O_NATIVE_AIO; - } else if (!strcmp(optarg, "threads")) { - /* this is the default */ - } else { - error_report("invalid aio mode `%s'", optarg); - exit(EXIT_FAILURE); + if (bdrv_parse_aio(optarg, &flags) < 0) { + error_report("Invalid aio mode `%s'", optarg); + exit(EXIT_FAILURE); } break; case QEMU_NBD_OPT_DISCARD: --=20 2.21.0 From nobody Thu May 16 05:50:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1563543515; cv=none; d=zoho.com; s=zohoarc; b=GbHqUnnOVufU5YaX0YpHR2505yTMWn4dnPtL4w0lQ6VKquYr/5HLsTB665Cp7pFgSe0JVTevudTdFn1opeUrJGJWoRAt+3kE74IRJqRvc81WyHrgnlWfLwGoeTp2+H8+qs2Bs5wyKuiD/dxA5ckE4U0Cy2wP2oV79vjNi7eQiqE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563543515; h=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:ARC-Authentication-Results; bh=KoETR8gbApZFB6Kf1iN1u5XLfMfWWkdp70lAnElXhFE=; b=G6+b45HDmVJPhry46CnBK+78yNqy1VuPc1iYzJ8Wu/+P/0TZjKFUL1fKT/kb8fRmuGb8z7tCLxHSzeWt0liy7MssMrLJ1pr7tWn9hddVXj6MtLtPwzv97VdGX1WYfEika5jHCQvDD8CkoJh/qF+Ikvca/pjICTQN+aPul5ErGeA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1563543514999268.74756538745055; Fri, 19 Jul 2019 06:38:34 -0700 (PDT) Received: from localhost ([::1]:45516 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT5l-0004uP-RG for importer@patchew.org; Fri, 19 Jul 2019 09:38:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38321) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hoT4u-00017u-Al for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hoT4t-0008SS-7D for qemu-devel@nongnu.org; Fri, 19 Jul 2019 09:37:40 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]:40282) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hoT4t-0008SC-1c; Fri, 19 Jul 2019 09:37:39 -0400 Received: by mail-pf1-x430.google.com with SMTP id p184so14199538pfp.7; Fri, 19 Jul 2019 06:37:38 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:433:31a4:f2fb:dab8:3a89:c056]) by smtp.gmail.com with ESMTPSA id 11sm31895369pfw.33.2019.07.19.06.37.31 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 19 Jul 2019 06:37:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KoETR8gbApZFB6Kf1iN1u5XLfMfWWkdp70lAnElXhFE=; b=tS4v0DwIrfckzCnKQhKODmlgbm9yI+OnX4k0xAkb9F37S1WciI8RjE54iLsFanH9yz v1aeGP8ND5yZ6G52EEEEmiVbyLNlaXfqEJmcyGJQmxoMyBKIGxd6FX1hqk4rjKeGz7WM RJx2bgYZs2WV0GbExGJXSj0TEw5A9sr9C8yIrUbeIYKxz8DUvSbVigRX8Mm9DIN9G6ie +W78S0wAYZxOmGDYXZSVoJhVMG/YrZwOFaZQh6dWBOMiMRu7VWvT6FZcWDbW+CIsxkH8 7mHehJZxosiQtvkDvhT1Zfn4lPItX4ic0cHaK/wy2j4owi1A+3IuYs3Ud1RfNtj6WR99 CLOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KoETR8gbApZFB6Kf1iN1u5XLfMfWWkdp70lAnElXhFE=; b=uAg6lKPYiEwAAxL2OKuZE4YJ/BdLgyT+qWdB3V6eUBRXUlwzJA4DRylNMW4R8s8G3C 4hm6+Ic166LKcfq7l7+3h89oe4Uw25egleYHxyN0inA/QHk4NF7s0rALQKBvJOiR+UoB L2KmOZUByqaDyxslP6O/7NeJDuwdYCY8qGrYsSMX42Iy3gaLsBUcgvhhcpE7kpUyc2wm nEslIzKgU6rt3EGrwKd0D0Lo8u03FoQiwpvqERhjl/k2cUsuivKAJ3tZhS/Ssks0D79w KF9V0FyE4bpFJ9zQ2WuYzZ1mL+AJT3nY7lGFgLkj1WE2l9t2oTnSuZtqwLHziMIFcIn6 q79g== X-Gm-Message-State: APjAAAXT245hkMg/RFO4KpEJ6NNLnxBIIG+MxeIgnDRSGbo6NsSSnMl+ zCobag5sW5AFrROoEw/7zbjeesWYioA= X-Google-Smtp-Source: APXvYqw5yPGWPRUDnVgNShffPjJypAR5ePskvPixEBVLEKOW8OWXZUwj1glJPxqHYLaaAGgKvXPddw== X-Received: by 2002:a17:90b:28f:: with SMTP id az15mr57151975pjb.18.1563543457774; Fri, 19 Jul 2019 06:37:37 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 19 Jul 2019 19:05:30 +0530 Message-Id: <20190719133530.28688-15-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719133530.28688-1-mehta.aaru20@gmail.com> References: <20190719133530.28688-1-mehta.aaru20@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::430 Subject: [Qemu-devel] [PATCH v6 14/14] qemu-iotest: enable testing with qemu-io aio options 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 Zheng , Kevin Wolf , qemu-block@nongnu.org, Sergio Lopez , Markus Armbruster , Maxim Levitsky , saket.sinha89@gmail.com, Max Reitz , Stefan Hajnoczi , Paolo Bonzini , Stefan Hajnoczi , Julia Suvorova , Aarushi Mehta Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Aarushi Mehta --- tests/qemu-iotests/check | 14 +++++++++++++- tests/qemu-iotests/common.rc | 10 ++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check index f925606cc5..2bc5bc62e2 100755 --- a/tests/qemu-iotests/check +++ b/tests/qemu-iotests/check @@ -132,6 +132,7 @@ sortme=3Dfalse expunge=3Dtrue have_test_arg=3Dfalse cachemode=3Dfalse +aiomode=3Dfalse =20 tmp=3D"${TEST_DIR}"/$$ rm -f $tmp.list $tmp.tmp $tmp.sed @@ -141,6 +142,7 @@ export IMGFMT_GENERIC=3Dtrue export IMGPROTO=3Dfile export IMGOPTS=3D"" export CACHEMODE=3D"writeback" +export AIOMODE=3D"threads" export QEMU_IO_OPTIONS=3D"" export QEMU_IO_OPTIONS_NO_FMT=3D"" export CACHEMODE_IS_DEFAULT=3Dtrue @@ -225,6 +227,10 @@ s/ .*//p CACHEMODE_IS_DEFAULT=3Dfalse cachemode=3Dfalse continue + elif $aiomode + then + AIOMODE=3D"$r" + aiomode=3Dfalse fi =20 xpand=3Dtrue @@ -269,6 +275,7 @@ other options -n show me, do not run tests -o options -o options to pass to qemu-img create/convert -c mode cache mode + -i mode AIO mode -makecheck pretty print output for make check =20 testlist options @@ -433,10 +440,13 @@ testlist options cachemode=3Dtrue xpand=3Dfalse ;; + -i) + aiomode=3Dtrue + xpand=3Dfalse + ;; -T) # deprecated timestamp option xpand=3Dfalse ;; - -v) verbose=3Dtrue xpand=3Dfalse @@ -515,6 +525,8 @@ done =20 # Set qemu-io cache mode with $CACHEMODE we have QEMU_IO_OPTIONS=3D"$QEMU_IO_OPTIONS --cache $CACHEMODE" +# Set qemu-io aio mode with $AIOMODE we have +QEMU_IO_OPTIONS=3D"$QEMU_IO_OPTIONS --aio $AIOMODE" =20 QEMU_IO_OPTIONS_NO_FMT=3D"$QEMU_IO_OPTIONS" if [ "$IMGOPTSSYNTAX" !=3D "true" ]; then diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc index 5502c3da2f..39c04cc169 100644 --- a/tests/qemu-iotests/common.rc +++ b/tests/qemu-iotests/common.rc @@ -482,6 +482,16 @@ _supported_cache_modes() _notrun "not suitable for cache mode: $CACHEMODE" } =20 +_supported_aio_modes() +{ + for mode; do + if [ "$mode" =3D "$AIOMODE" ]; then + return + fi + done + _notrun "not suitable for aio mode: $AIOMODE" +} + _default_cache_mode() { if $CACHEMODE_IS_DEFAULT; then --=20 2.21.0