From nobody Fri May 3 09:00:37 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=1564702962; cv=none; d=zoho.com; s=zohoarc; b=X9r2bvyiwjqaDGw1LNVqvozhJ35jqFyDC+MHTwHAFM75MdWzNPkufSybac7KWDjqLt84ORNUyergzpsb2mdcN/t7cN231GkSOFQuCX2VWIk/b1YrVOayYb+Bi3e+7BkK/xEv1e4ypFpLJb8iPxfhsQBuwxqZEXaaQskyoxgeteQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564702962; 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=dbXKSdV5tn5FcTOHM2GayIdaoxtdtsUeiXsLP0/PfEA=; b=RlZ6jaA0PcJWORST0XfOvJcENPh92htcLucWFFFqk6EvsxL/ZK338MxB23ZDJ+Jt7YOvbyzK7UbV4DGBcyCg+zNBEDBIk85pxhBLX0qI+uLYYWAgXtNEKyW1tmkivfzgTveFSH0b+QzHbAqINQBJWY5TP3EfNByaWA+WaVNc22I= 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 1564702962243917.0266017710101; Thu, 1 Aug 2019 16:42:42 -0700 (PDT) Received: from localhost ([::1]:59682 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKiV-0006k5-Cj for importer@patchew.org; Thu, 01 Aug 2019 19:42:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60004) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKh6-0005BD-St for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKh5-0002SE-Q5 for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:12 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:35401) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKh5-0002Rn-JW; Thu, 01 Aug 2019 19:41:11 -0400 Received: by mail-pg1-x543.google.com with SMTP id s1so28749396pgr.2; Thu, 01 Aug 2019 16:41:11 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.04 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:41:09 -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=dbXKSdV5tn5FcTOHM2GayIdaoxtdtsUeiXsLP0/PfEA=; b=XcXPW8Y3cwkYwf8ls0CKEcz3q1LG1Wb84wXqMaBg9HsqpKStZy154RzAEXgl/VHa+g cZIWffMKlBmrDwS7aa0iy1kMYYkcplqFsa4nmgTLM8wVgTsG0IInqy1h7P1MEfCCwznS v+mhO4RVlj1593/pNThaffWHDokk1s9CANQ7XoB7XIvGO6gR51h77/f3Tn1BWpxH7FN3 t1JERqqPF0lGujhePRHTo5FTxZOmQIhQ2q3lvfGRrHor5LyMVJdAwRZ+ryHoOhBKF/kc FyqhA5yFAF6oDXHn4c64qC9ZOzRvn9W8baf6Y8WJjY+e2O9CWsL/XYWhfYiIRlXsNrlN QmSA== 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=dbXKSdV5tn5FcTOHM2GayIdaoxtdtsUeiXsLP0/PfEA=; b=UspJq+3GjOqGIZPdGK3f6/2aXEfW2sHLejGAp22UA4mwfs9lrpQyOjDNC7txUrfyX2 SWESFVsM4/Oclj/vZAj5LzwH7r9jsCoan7hYsxxyzw4XluwqNxtIjHAvmC878IH//2mF K9un9zxnVh1GhjSc2gupZWtYfm/0IHPG6SmHAMBKbraw/GwDEdwN0yhhdqeque1BejGD w4NXa/rbzTTU8mt0fzY6KXB78h5jzY7UJ12ck22kNRs6Ca/kkfum4iXCExn7po+7m4P8 6veMP0jAR+rLf5RN9R7H5MVgmpcMwf/ecTPih0RRhPIa2JAkFAVnAgaw//EajiqJWuqG JZkA== X-Gm-Message-State: APjAAAUWfeyAE3Bx05SLh2qAivIjyRFS/3CDjzwIw726EBQDhUkgiUSX 17zIEPdo/jTcVSC4KbVUUsv4Y7MKWNv9Ag== X-Google-Smtp-Source: APXvYqwTi0qOhhC8naDCx1QJ2LHXpCkNuSh0hRzvuqIqND4XsMKJROjj/m1FZ0RExzHbXK/Gr2JZtw== X-Received: by 2002:a62:7d13:: with SMTP id y19mr56342938pfc.62.1564702869685; Thu, 01 Aug 2019 16:41:09 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:15 +0530 Message-Id: <20190801234031.29561-2-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 01/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 714e7fb6a1..493dbc2ec5 100755 --- a/configure +++ b/configure @@ -371,6 +371,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"" @@ -1272,6 +1273,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" @@ -1790,6 +1795,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 @@ -3975,6 +3981,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 @@ -6398,6 +6419,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" @@ -6885,6 +6907,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 Fri May 3 09:00:37 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=1564702988; cv=none; d=zoho.com; s=zohoarc; b=jkYdGk1lnxoK2zDRSIvYvG8J8yTsJZdAKx0+4kR93b5a2iqirOggWsR6hqfINMw+sIsF/RpTkfaRfSYnvk99j7w3VF808Z4vGDRXzJORKl/fyLfPpL6Wsj4bmyJDJzTCs7TZoAxBRw8BxOOrXlH3iHNbUe/KMW4beTYYIISBG9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564702988; 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=kq+GocMZNBzs7h+JrH4HUXS6sT3wW7TSwegih8ayQCc=; b=JQey8rizddRDB7K+kEk6Gxv/C4ojz89Q+nPY4XHa/d6rMLiujwuiZycEjVyJE+LbCPhntmBq/9/xQh17XtMyYTnBFr32yVKJuIHa+FPrrOFWd9Vff0hFPIrWCYIDof+qrfSDLRE9t0pEuoQHa/5csDLvDkrrIFv/OYcdjioeJ2k= 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 1564702988551846.6060345972442; Thu, 1 Aug 2019 16:43:08 -0700 (PDT) Received: from localhost ([::1]:59684 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKis-00072W-BQ for importer@patchew.org; Thu, 01 Aug 2019 19:43:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60080) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKhB-0005JN-LV for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKhA-0002X9-QG for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:17 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:41292) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKhA-0002WX-Jq; Thu, 01 Aug 2019 19:41:16 -0400 Received: by mail-pf1-x442.google.com with SMTP id m30so34964590pff.8; Thu, 01 Aug 2019 16:41:16 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.10 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:41:14 -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=kq+GocMZNBzs7h+JrH4HUXS6sT3wW7TSwegih8ayQCc=; b=iRq/GR6EwHoD+MuyWgZ5RKCxUU45yxdpe8G6Dh8WARNBMYllQ3iYRLFYBtEtGf45Fl M2EEwS2gM/RrEIIPa6DK6A2lpyGeaDhOMJ5o7N3uFIy9kaNVcFogKMbnlPuxkdzBXAZ1 bn+S9DXu/0uUmlp2nfK6pHqW95BXnkx29jZ9iFLVhulRb1wXcAP+psGNVwoDzPjRveM6 j7zTZuTSby0LRzeVu3QkLlcHrfqCL7aBjdO3QCei1AsepLw0C4nfZhybiH8JsSfoeh1P qBH2n0/b7Yk7f0venYs+NMWzoZDDtjmrLt2idsht/oPSCobT6lRGNK3mGaULRnc7Jpe1 ENUA== 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=kq+GocMZNBzs7h+JrH4HUXS6sT3wW7TSwegih8ayQCc=; b=U6+Ej7yhX8Jd8GDxEj1TMeGxm0K0dxJMnwpSlVzExtyQBlKNXHg292WooAJwe1sIni lZzio8DilSyT1eRbSNymsZBHIoudDsJHQfV7yglROKNNAZmBtuxGJo6I426FbmCtxwJw j8nyZqGy7krNISDxG4Q00yQq0yjghDnZFHnuFf45RDtDaJrryd8HKHX59Lyl6TbD4LuI PC046+PqLT0+P00StJLgg0BEw2s2M/NSYQkdWY4cd6KcusBmGHC/Nq4UMIiQiCDI8Vd0 sA1PljRtOSt5LE3Mt7izg04tcggQn0s2Ux1vb4ZcqpsXXgA6w1bsOtiGu9TzBPa5Axie jb2w== X-Gm-Message-State: APjAAAUuCY3cLSYz2Wkuszx+yRBGm8XsY8Ox3ojmLB32E76oDzpuZgAH bVE2g6JE0P7LCYDWEKPgjBmgaG7tWPZ7Hw== X-Google-Smtp-Source: APXvYqyQ6ojcmIVH3UvGUs5/DI7u/lEkVqLkgbXfItztus3TbN1qCnE476el9yjaQoS0eUPTZ9yR3w== X-Received: by 2002:a62:1616:: with SMTP id 22mr57310422pfw.120.1564702875261; Thu, 01 Aug 2019 16:41:15 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:16 +0530 Message-Id: <20190801234031.29561-3-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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::442 Subject: [Qemu-devel] [PATCH v9 02/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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. Since QAPI schema supports io_uring, which is the actual name of the Linux API, it is preferred over io-uring. 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..3dc93b483f 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.2) # # 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 Fri May 3 09:00:37 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=1564702993; cv=none; d=zoho.com; s=zohoarc; b=HBYFG8czrS7tRi+w8usH0mpBRf2+hfhv8vK14wYhOfoMSO0or6pMyQJhSAIKDqtDUED6Bo65/YHZ/9SR15/jN9tiihztAscCbHvEvpPMf+heD0aZR9eoDmQPrW3arNhTE1CzbET9hyY6BXOpxF4ovcwSioIPdOmJoFfJ12fUTe4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564702993; 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=2qHkahVEkN1zu8CSs6/qp7V0fV616Ybkp0QDQj4tHxQ=; b=aGbUaozwFUyo3y4px5XhlSeWid0vKZxfdri+yZc9jneaE2R+BxqMHKXTrsuZxlAdkmstbRQ8f639qjZP2H1DcB21veSxthJJqPxFsBxSd7DwlWqNmZK7FqUMrcxVgGT9fJefChmo9VxF1cMserLWNqDmDZNgO8fzfXFDUFlOzJc= 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 1564702993184495.06219960129727; Thu, 1 Aug 2019 16:43:13 -0700 (PDT) Received: from localhost ([::1]:59686 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKj2-0007PI-8f for importer@patchew.org; Thu, 01 Aug 2019 19:43:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60161) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKhH-0005Xa-EK for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKhG-0002d3-Fi for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:23 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:38762) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKhG-0002cP-AW; Thu, 01 Aug 2019 19:41:22 -0400 Received: by mail-pg1-x541.google.com with SMTP id f5so26229662pgu.5; Thu, 01 Aug 2019 16:41:22 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.15 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:41:20 -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=2qHkahVEkN1zu8CSs6/qp7V0fV616Ybkp0QDQj4tHxQ=; b=sRblJsCzFkP5cxUc0otHsHJIx9cnvVRdxSxVbV5r4nlaQUA25oPZ3zjR1D4AVM4IEL bD5S9ztG1h7BBoiiKzmrFyJqiPsoq1zM04wZCLADPo6xAx0p6GzkO8L5wrqjtR0FHqr5 Sl+JtdCAISYTtjWMD1qxJWuNxH8Zde3Z8utcG1yrro/brXKLs9wQMtlABfCQ437WHJBy z3TELbbX+8E0iQwM+LlyT2LwiVeqwX27ChXzDxupbUWTx0Fmg6DZGJpFAZeG5LyroeHC JSDrbdOZPLsxTjpInOpraPZEYwODwB7YeLuBPPcGX4mUXu7OPwKLCYmp1BrTYuCvYbp0 6gmA== 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=2qHkahVEkN1zu8CSs6/qp7V0fV616Ybkp0QDQj4tHxQ=; b=nVtkj5xN0gHt7ILwc1pjX690X31P2c4mO2oyaImwEq80qYCgsJRkyQnxazQ186LRt2 mlGctTYTWe3Eb2iNO3CCVDwxYmxphbTJEQR4+GDuaHTsmeK9H7t9HDKHAz1wgLTCCmwY kiWp35l385NHbrYcWfNo8D8HcSqohSTsQDXgcVFXSbPpwT2jAvmlRQ+jgvdrTk5+/c+l r3vVe+dhqPpCG8oTE61QUjpLY2khOQeJcsoAX77SOx9tl2PLxEYsuwjxYFwQCkl14eWi xl/HNwqROlrmfBJlLQGlkaJKIQKihOewCHjqIOXPKtDTc6BG1dzMH116pJoNr9EeBtxy UjYA== X-Gm-Message-State: APjAAAUdLnp3EGb33m6HTl0D1olE89whO6Ve07JC/FI548K4YuKAejcz oVMSptB2gJuT+g1wKI/u2xAGfKJz4S6qaw== X-Google-Smtp-Source: APXvYqy76Pmq4P8MzDrDXm3AcVoRzrsr0vLd9ULztHgi/12FeyDStq0M3pdWkpb37AG3RINBv/cC9w== X-Received: by 2002:a63:c70d:: with SMTP id n13mr120222407pgg.171.1564702880898; Thu, 01 Aug 2019 16:41:20 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:17 +0530 Message-Id: <20190801234031.29561-4-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 03/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 50a07c1c33..e29baa172c 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 Fri May 3 09:00:37 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=1564703099; cv=none; d=zoho.com; s=zohoarc; b=cGmTmUF0f+PNyIIzFWZc38f+o9FCtrLbMieHBrk2RG0xP9Tb8OAniZPI5KSTOeaeMtgV3KF8jBKzoM1art4XMP0mFBkD3ATgWuZkYxAt3AYLnt9tX1xCpD+v8fzf/uLohm9GlmmvO8lZoL5l28eRmD++hfUDzArt56B4tBpwhpY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703099; 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=hXmBoKcclHo43SA4lszos7jbnCcUTSqSDPN0ATn5TOc=; b=RYft/QdvjExYv5GTCP+hu2mrkFnNYwvfqIdtaNVECfK1anH8gu11ppy+OILyuyYkjGHDMx0rFDWdaQgfKkME3WGt7dLzonp3IuSt1Ig69Ub6NnRiaTFTuGSTypBXmvb6v8XGxBTVXXiMjOPoNkpbebhDl6NffHy+cg6qNIDFBQk= 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 1564703099840695.7438250656808; Thu, 1 Aug 2019 16:44:59 -0700 (PDT) Received: from localhost ([::1]:59726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKkk-0002Kx-Rh for importer@patchew.org; Thu, 01 Aug 2019 19:44:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60253) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKhO-0005pW-B9 for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKhM-0002hl-6x for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:30 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:46765) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKhL-0002h5-Tp; Thu, 01 Aug 2019 19:41:28 -0400 Received: by mail-pf1-x443.google.com with SMTP id c3so11816212pfa.13; Thu, 01 Aug 2019 16:41:27 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:41:25 -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=hXmBoKcclHo43SA4lszos7jbnCcUTSqSDPN0ATn5TOc=; b=lX/oHgKW0t9IV4kPa46NgHQryu6oAI4A9M0xWcXf5QaDSRsiZlQHpjmOoC6dZACs/m a3dmNpZGJmSPce+AoN3Gi3IELi/PR3VnzaZkDufjdPLfDLmKVphbwlmKKxdaA46+T4Fz YqoBS/C6Mj1v1SUdAbj6XDRbxHuPQkJa96kW/iqCrTKbav78U9GwKVoeIjsVMY+2j3pR 30XxWmSJ2V26ikLo5IsokeWrsXH0M8dGOWUWgxROzFTJGNk1v/I9fmNoD+Bf7I2XuBcZ oOzsDxv2EOrABnbrCTOolq8dDxQbX4wDLre+3jHeL8ACxKRIDppIZYvxF+Y+PRBgWwwY Ml2A== 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=hXmBoKcclHo43SA4lszos7jbnCcUTSqSDPN0ATn5TOc=; b=s46Rfh/Sd9H613o2hTjq7F86yCsbwF2WmUtWDlJMGYYAIJRsIy8rdavhKgFwjiBWhR hsue9thxwN+DmC5DdtJUTny7wpuCQ+WmRDL35y8lpo6GLwnJOGKNlGGQKl178Ept9k2d aRFQPOhuvh4vD9sDTkDb5qsUW3LonmLENONVWWVflE5/B54z1bvJfjhguF/pV7TZJRkw gImFVWfRiMIckLrEi5SquKugf9dFBhJw9rdGUoZtZ0IDbcMT1nwre0Co8+3CiM+GKgE3 WSbSW45uY8LLr8ok+mll7R9F2BjHZdkq15pm1vIo6LOA/1ZGu3VcAmk7eA/f+gRBu9fO dOXQ== X-Gm-Message-State: APjAAAUSlbyNGu93p3oBA9YZb67N6cDJ4ooxAUKr1tLOfdsAalckKPCX LRNp618H7VtPqRaTSXdj4RFQaLnw+2+BXA== X-Google-Smtp-Source: APXvYqwP+VHD717TRCE8zJWBMsTGruK0XZoMdt2IQ8mTM0wV14rbuFyaGcoDBua90m7ys8cLGBOSAg== X-Received: by 2002:a17:90a:a410:: with SMTP id y16mr1351682pjp.62.1564702886415; Thu, 01 Aug 2019 16:41:26 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:18 +0530 Message-Id: <20190801234031.29561-5-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 04/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 Reviewed-by: Stefan Hajnoczi --- MAINTAINERS | 7 + block/Makefile.objs | 3 + block/io_uring.c | 409 ++++++++++++++++++++++++++++++++++++++++ include/block/aio.h | 16 +- include/block/raw-aio.h | 12 ++ 5 files changed, 446 insertions(+), 1 deletion(-) create mode 100644 block/io_uring.c diff --git a/MAINTAINERS b/MAINTAINERS index d6de200453..be688fcd5e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2530,6 +2530,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/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..902b106954 --- /dev/null +++ b/block/io_uring.c @@ -0,0 +1,409 @@ +/* + * 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) submit_queue; +} 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 submit_queue. The caller must en= sure + * that ioq_submit() is called later so that submit_queue requests are sta= rted. + */ +static void luring_resubmit(LuringState *s, LuringAIOCB *luringcb) +{ + QSIMPLEQ_INSERT_TAIL(&s->io_q.submit_queue, 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(). + * + * Function schedules BH completion so it can be called again in a nested + * event loop. When there are no events left 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->submit_queue); + 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.submit_queue, 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.submit_queue, 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, IORING_FSYNC_DATASYNC); + 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.submit_queue, 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= type) +{ + 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/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 Fri May 3 09:00:37 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=1564703096; cv=none; d=zoho.com; s=zohoarc; b=cxTblBVlGOSB6iMnWyWjSMmJC/GNM4Mrv0FDakKnokrchN5eRCxBX5gQob41kv+ilVud3m8ZHhH+TFwrOj15jFEDJg5RlB+kNAuI6lkxHePFKd1WaZo5QaMpuLXH1vGiN/SdJryryfRfWt/S9qI2EwQe16WXZ15gPYXQ0Ch1djY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703096; 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=A+f1nTAYThN43NLD0uFt8nEj4oW9MitsnNvRn4dZPNs=; b=Gm8L9iJZHzmlnGPaLGmPOJdw44ngqq8DuRIfgzQUdp85fqPkAse3ORGCfRoKlhIglu3l6f5Idk9S3yK32Mo/ePv+OEqGs3W459Umqza7xSEIxPfSO1myv0iNJaNk1A6dp8qTiT2v2Y9pijarZb+UXx8//4TsjkB0W7D/4m1rL54= 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 1564703096853143.12217039458915; Thu, 1 Aug 2019 16:44:56 -0700 (PDT) Received: from localhost ([::1]:59724 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKkh-0002AL-Rb for importer@patchew.org; Thu, 01 Aug 2019 19:44:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60311) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKhX-0005yt-1n for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKhS-0002mL-2l for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:37 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:35609) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKhR-0002le-Of; Thu, 01 Aug 2019 19:41:34 -0400 Received: by mail-pf1-x443.google.com with SMTP id u14so34970726pfn.2; Thu, 01 Aug 2019 16:41:33 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.26 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:41:31 -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=A+f1nTAYThN43NLD0uFt8nEj4oW9MitsnNvRn4dZPNs=; b=JpPEC8se8HS32W2FaKSCQ9OfcIWXXsMyA/CaH0o2CVR2a4dLgp8RhOpTkvJ9w2NqGy VXkqJoPM7a/ECKniey8H5Rhu5dwaceLUuR2VODZO42xUx/Yi9xkGa4dpAUNtRhH5bbb9 1+gKgPVEXXdZCMKwNtrjWocdG3DKFoIX9h4WaFPJDP1r28EIOXovSXVfWug7nfBg/2MY 6rcc8wC93S2NytY1g653XuKfL8vj7haG/MUrrlMD4jUSjmLFhCEhDVZSBLUYmMdEFC49 lR8iLA3Yd2ZT40iIa8EPEOxsTtCHDmV+f2/viXCalRcyQlzRS17eFRU/y+dewJmVdG00 /kfQ== 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=A+f1nTAYThN43NLD0uFt8nEj4oW9MitsnNvRn4dZPNs=; b=Z9HqAdswV1cwPzpBDw5sdmNwuE53pjOWSXLljNujQJUK/JBwwrXyGZLx/wFSSDkzBG Nck9NRQxtYmkdrPNI5XnpBdDlQzhYSurolIUkokfNPjukUOO4iPvz510dEggJnsAsNUA jLMkpRY+QVr8S/m+ebBUnH8/zMXrEAPmadqphYwlvfb7JF9VKUIk7Z+mwjxJPXaTE6jM WnOYehFv5ab2OQaFv5vRBRw7fWzv8ZhMON+CUoGiIESaRSBE957J+hy1HlhxqiymUU9q bExXbDbVyS9iLmecdb/11LefUmy31EW0JMWlLAD3cq81l12svd8sHwVGZj1jxJDgeEih Ghww== X-Gm-Message-State: APjAAAUQYQtlxlOlGuuwqYhNsxMkH0aV1ol27jK6+J8VgWEHbLNiTQqK r0RGiMQcdSBETw1cKqafU+dmwz2MV2/DSA== X-Google-Smtp-Source: APXvYqwzDiNhTtNB1BuLeXleSrsc84/0coAbaMeMH/c2opJ26BBUW/0mVk6qQQEmsqEbKsRdrhf+Zg== X-Received: by 2002:a62:63c7:: with SMTP id x190mr54268536pfb.181.1564702892433; Thu, 01 Aug 2019 16:41:32 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:19 +0530 Message-Id: <20190801234031.29561-6-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 05/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 be688fcd5e..bca5de7d6c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2536,6 +2536,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 Fri May 3 09:00:37 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=1564703184; cv=none; d=zoho.com; s=zohoarc; b=RHlQr+QiGTiqBI7lMvxu7Zm19nYfWff4V+Oo4xWGd3o/1rRllWJU3tB0CCCtDo+yu7SVndMyfktqbE0tudVCIO824mME9uUaSaNmT4vvY2nM8jw0BjI9d4dpxstsjzCjOTPqxU6MsE/vmHZ05EAkihggV5Y4yXJZFrbvMGo9Qzs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703184; 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=Lmr6SJe8upLI5qXCfu1koLADmEfzSptd9+ZfFgu4AGTQOZSisu5ofCewVDzl01SYn5ca+GCxWrQlxdDJC+x7rtZ+xSRDVTzBLMvULa0Jnp9GAKA71uaWFST+YNtl/g2BigauNtjl2FQX4QOTMKmShLnj3Hbue1hV5QfiPtaB57o= 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 1564703184257730.5818978749741; Thu, 1 Aug 2019 16:46:24 -0700 (PDT) Received: from localhost ([::1]:59766 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKm7-0005c1-82 for importer@patchew.org; Thu, 01 Aug 2019 19:46:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60362) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKhb-00062W-Nk for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKhZ-0002pt-FL for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:43 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:45055) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKhZ-0002of-7m; Thu, 01 Aug 2019 19:41:41 -0400 Received: by mail-pf1-x441.google.com with SMTP id t16so34922784pfe.11; Thu, 01 Aug 2019 16:41:40 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.33 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:41:38 -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=hBN4ObvFwtE9So5SJPGbx4BGev2mPDVjEvvGPe7ZQdWqsxbU+sOZCbZbHi5uOfbo8I taW3/sxt/jaNZykeGnHHIBm7jjiKPgahW2wa7m/yKgrOrPYEIyoZXNBcCg/gcyo1avOC 8UBawDGYpvXUG0/nz9viYlB80/uwyUNiBlNzkuLCx26eCzWmqPopYPY7ojiSw73dj8bo cvrfwOBDl8dk0GirwK9paH9+UCbpTObZJhSJ+LQnuf77XB57jJFyJHDoeWRfa7ZgmIA2 I1T+J2kLA1EGbfb2ZPrzHcxMbpvRnjbBF8NorAXlEZAWjKRZv1mJBUKbQzr1sD7TofG+ GVCQ== 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=tAERQgahKy7dZX2PUXjs1zAM3JIxjTf/WoZIsXqOCvnRPwMn5/DnFi6RkKHus2NH45 NYpASZCYpsvwPiM+j1znOsVWUSVILnU9bmPC23R87bMl98B2YBdsrjXyxlmsGknQl0KQ z4AjorlsG75JQxptZmQE3o/9Q7OVHIgE3qBRyQsHgc+8rj+FzDDFQXcnakOl5To/p/L4 ZQe3Uz+dCgQXZX/vgcbbFmVaj49kTXAXFWaVa+1hRHCMrlIYZow/MpFzCrm+qq+/bHkq UyfB/ge6d6R6bKY5HjIylb1wobbfnJewjo6gWlmCmdEqPbRoA6wOxMDhdrkUX/jD3vS7 oM/Q== X-Gm-Message-State: APjAAAVit5hRwOoOorauTAl3GghBsMYoV0tLdKUpbkiqSsQK3Kx221PA lxkjFoMX2soyfOehwqsjKDgBVQ7gHY6i6A== X-Google-Smtp-Source: APXvYqzknEzI3d8LNFMiWr34n5QpGEU74eolJiUbJb392IXoHKZFp17+ZqSs6kiS3FFq3p+VrnTKLA== X-Received: by 2002:a62:7990:: with SMTP id u138mr54062389pfc.191.1564702899107; Thu, 01 Aug 2019 16:41:39 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:20 +0530 Message-Id: <20190801234031.29561-7-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 06/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 Fri May 3 09:00:37 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=1564703115; cv=none; d=zoho.com; s=zohoarc; b=bSidpXB3XeMBUqq3FiDyOstFsuv6jQaaN5v1KX+iMi0ST0V3yO4vPVYJBGObpeCfhBnowQo1VF3Tt/4g3J9YfNCYZEOq2Kby2BNOKwsbEcq/cu1V9Sewrhd7xZtRv8nCHLeeagYHGDA5dCAwFgStU8pl3hDlwlw3U5u88Uk9tZQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703115; 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=LR9iVRChMwWQAhc5h02KM+c31gdyfKaD2veUCMmmXek=; b=Sqd+xmN4E0OWhRN771DwdSdQX6dNyQq3Bz3ml1oTmJLzzs+2aSXtcT0s/nZnk1LZv7VioTCB+RA1X7mDml4hTZLSdqAzH7HzWpr4SCbxUSePMPKLAufG8K2XtTbbHvRaKPZ9amADErITJH2Zhr8/6CjbfBwu7KeUPCweJRzYQ3k= 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 1564703115311105.89872547388745; Thu, 1 Aug 2019 16:45:15 -0700 (PDT) Received: from localhost ([::1]:59730 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKl0-00038v-Cg for importer@patchew.org; Thu, 01 Aug 2019 19:45:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60442) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKhf-0006Ea-4G for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKhd-0002ti-W8 for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:41:47 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:37744) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKhd-0002ss-Qd; Thu, 01 Aug 2019 19:41:45 -0400 Received: by mail-pf1-x441.google.com with SMTP id 19so34949034pfa.4; Thu, 01 Aug 2019 16:41:45 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.39 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:41: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=LR9iVRChMwWQAhc5h02KM+c31gdyfKaD2veUCMmmXek=; b=Nl7yPej316VPS/Y8Fo9dL6Wra7A9Wq7t6eL6hFmZuR3VmXdQ8Z19K9Wqd2jEOAQNq4 875eL2uCzASxxfRHBAFVLwoW2h+VwigRcZtFW4a+8ykA/bo0RUGlZGv3QM6JfvK1uhrr fiGGmDUgJ41ZBFmH0UpsClagFw1URNBDduryybk+IJwkx4CfHrsaMTnwWdhwiO+LUYy0 nv9aar6AIrTSY42eH1Om7eEITlOuXLttK6E7zMHswZyWqq8c2n0Mtdw3JGN6kttEdU0c 5pGd1DMJYH7s76uSWJi+pIhDcc08+STVvNzXUy1P747vG5w4gZl89yMkbvWSFIXqiD/w 7jUA== 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=LR9iVRChMwWQAhc5h02KM+c31gdyfKaD2veUCMmmXek=; b=et4w1fSrXVdOvQUTb5ENg65uhJ8gGoe1D9WscZfKqBQzm8DFDQDlJ6vm0YgvXNV+Su 8PIkIqNokuzcJ94ers4O1SMTVo46nD2qjDlAanQsORALvCTKabQrX1ZNTptmLZyduQXn PKQlSFo74cjUGRqeIC+wnNB+HV+SoEijrjkgoVOShBPWv/VRoz+EQG4mdZ1UhgoMnDVb gV4A5KCYfKjOG1HuYjH/p8BlM6eBAkmN2OWgp8DPKCoGiBQe9e9XgC0FHE5FqYyu4jLj GNBMvUu+dEiRFNBZ++csWhY5rY/y7n3M4jB6sCQDfclj7z9NSqIIUvds8iJYAEUpZCox oMDQ== X-Gm-Message-State: APjAAAU0D4ao+peSKYGSzezSOuUaz/4r/89b8kvAeb57yBwBgsglC0lV wFRbeMV92j2PkQeZVQu4R5CR5KF67zk/LQ== X-Google-Smtp-Source: APXvYqxBfK02PR2ZSDa2jRkfg9Ax6fk2cwlKvVY5Lp/iDlZZ1w7fVlzALf0S1OqHUuKyR/kaJAJXDA== X-Received: by 2002:a17:90a:fa07:: with SMTP id cm7mr1316344pjb.115.1564702904441; Thu, 01 Aug 2019 16:41:44 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:21 +0530 Message-Id: <20190801234031.29561-8-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 07/17] blockdev: adds bdrv_parse_aio 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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.c | 22 ++++++++++++++++++++++ blockdev.c | 12 ++++-------- include/block/block.h | 1 + 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/block.c b/block.c index cbd8da5f3b..401831e28d 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 open flags for aio engine + * + * Return 0 on success, -1 if the engine specified 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/blockdev.c b/blockdev.c index 4d141e9a1f..a41623ae9a 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, diff --git a/include/block/block.h b/include/block/block.h index e29baa172c..ec6b9ea4c8 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, --=20 2.21.0 From nobody Fri May 3 09:00:37 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=1564703110; cv=none; d=zoho.com; s=zohoarc; b=WFlAs/gm1z2pyULaTw3arRK/vbvk187UdMH2ws3Qhb3U+5F7TLt3zvJP/hcfjCQiXfATyhpOE7hPKVMCkRwIzc1nwNgrvWDSiYjd5vS60AqYTxkXp9cuMdT97jGuBB2EyjI0kuMa2ZV9O98ZbVCFn5LYi5Z3GSCBw6Vo2VTlGIY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703110; 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=VIbCCiqkXwkRR3OlBzyvEa8q9jsIq4iRUCXYKqboH9I=; b=RzHQzAP70GQ/JUDYmSEdrgi8O5ppBWotsChqvGkPJCDGQN/qxWeEkNhTbO76M7IDV6yjTBiLCig6qsDQuqJOVKiewtL9EY8gNeV1+QXDLTy1wvjlOrrJfATeAgXtSXrhK8JR2thruxBuZkJ2/kxRnHgEvg+PMG+8drAnDSDLSWo= 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 1564703110415567.9851635685343; Thu, 1 Aug 2019 16:45:10 -0700 (PDT) Received: from localhost ([::1]:59728 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKkv-0002sH-ER for importer@patchew.org; Thu, 01 Aug 2019 19:45:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60619) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKhu-0006mf-Gt for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKhs-00038n-TK for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:02 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:46766) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKhs-00038J-1Q; Thu, 01 Aug 2019 19:42:00 -0400 Received: by mail-pf1-x441.google.com with SMTP id c3so11816817pfa.13; Thu, 01 Aug 2019 16:41:59 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:41: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=VIbCCiqkXwkRR3OlBzyvEa8q9jsIq4iRUCXYKqboH9I=; b=Efu21cUhuU6QiXDDsmhhQoFos7Iv/MPAjqha+2jWo43Ouoooem6UnMnlLGlftjGKuZ pql4OixfIvX7AAhF3U1JPuOeOMXSuZkUqsdaS/OVJi7mmoGBjLPDctI+sI2dQ26G+lRg WWMgWqyy8xdez48dZ87MJKS7mJ8mlYnZtLQIWV/EZUYX6wfvNupWvw2JHBTmpwwPSsTo g4aDyGHqV4CiuUISGXw3OXYxvkthIUu+nVqlB8zBeXahit1lZfZejLLTZY9lTRTxTYB+ 3b6I7xsyY4x6HccuAORCGJs4wS7a/fb6Le0sFlCzFQg+COfBOm9e40vqA+mN0J3WRdPP YmFg== 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=VIbCCiqkXwkRR3OlBzyvEa8q9jsIq4iRUCXYKqboH9I=; b=naQXBIAQ5mdGGQTx5rZpPAcVD8VKAtMaZSkJG86rCOTrJEBr0Ica6UgLYyiYOVytKk jiuSkJwCkP51+b9OG7Ze1Dsq8yz7upeZNI8PpDhu44l1qcvWoLrHRYylzNbSYorcAY21 YCZV/Q7u5+1Ayn+BxtNlN8+bS7eZG/8MtVmf1CrJenaP8aSXkkMtsheyCtqZBmcvl0qH I8PJg98aXXzntR4V0PFsxVqAa385m5S/Khi6x8FPr2X0WTA+GuojPkqKIWdMe7qbZS9o AemMN0LmKfVVsomQI4w1/MARhrsosl0kwpLT7GJXm3Efcpk6cnQ3N/FmRd3xQvlr8sst +0aw== X-Gm-Message-State: APjAAAXNaiTmTiOch2w2VXByw45b7tjyXnpSpL3SYxDxvnIBJmcy0nP9 ZeFFska4T/JytOkzbJFckRqOzcLmpWnW2w== X-Google-Smtp-Source: APXvYqwnyProeKKRZRSTTDJXKk6lppsuZ5e+Ed9s3J3FBbC28rIQ4guKhOjU2WpSHCHDJWCeAdv/1g== X-Received: by 2002:a63:9249:: with SMTP id s9mr117704390pgn.356.1564702918548; Thu, 01 Aug 2019 16:41:58 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:22 +0530 Message-Id: <20190801234031.29561-9-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 08/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 --- 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 Fri May 3 09:00:37 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=1564703216; cv=none; d=zoho.com; s=zohoarc; b=CTMRfKCTr/mFMG6dfzQ8RXMc6/CYHH0poBa+jTKvlYZg0iqUPQZbGbBJWAS4MD3JAe5P0bMEwO3mr/Dt1js3lhlCtzuFODT/yZNkga7Dj2bAPC8/anTB4qi4PTB+OAmM+4yxvUX2vtGoT5quI2a/8KKTJ1vaSUA2fWiJ7p0fz+s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703216; 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=q7un9GXrCv/5aTHnBetqkCjtriHMetbWTdpa7Iwgcmg=; b=kjPqRbuWFB9YGL4303erCBSkmiSKSjOcdruvdDtZfwoE51cnFUtXwGy8KZSYEgkLtcs1xhU5jeCdDGAGr+FZjyCvtN733PkyIXG2IgViolYWBcP8GT3hC0y9ASHjSqGVx0u6FMLlJpwuffJai9tblILe4rPkEyD/zVUnt1o+5JM= 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 1564703216036723.5164856820336; Thu, 1 Aug 2019 16:46:56 -0700 (PDT) Received: from localhost ([::1]:59770 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKmd-00066g-2T for importer@patchew.org; Thu, 01 Aug 2019 19:46:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60730) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKi0-00070h-2o for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKhy-0003FE-LU for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:07 -0400 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]:42787) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKhy-0003E0-E5; Thu, 01 Aug 2019 19:42:06 -0400 Received: by mail-pg1-x544.google.com with SMTP id t132so35041852pgb.9; Thu, 01 Aug 2019 16:42:06 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.41.59 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:42: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=q7un9GXrCv/5aTHnBetqkCjtriHMetbWTdpa7Iwgcmg=; b=kQ15haMoV7Oz3LQ42lgzlagnollJg1ZEsH/t7zWTQLvhK2O34xtX/ml0dwRS+eRRDd xts+CACWPZqd/4tKVBhBfrRZVYcCF2aFWjn87yr3vXUlFsUvFfIzhTWcghrzEDWByvQy +OApVJlSg6l+/mxQo/LSI2iBUDlW9fHBOOMHp2xFMyJDQ+edCZ+09Gk/tJIgVEo8voHv 7Q0o6Ky4TqUpkfru82Bsoq4tX+Pn3UwZkk5Gruj5wAtfMJ6q1XdHM0HBxx+ZW8SEMPGJ 5SfGdnBaJYu6ICOFcoXYRCeacP6XvSO6gqy14aTJAelj5mfjNQ0eOS1fJvapetUspHhy TgKw== 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=q7un9GXrCv/5aTHnBetqkCjtriHMetbWTdpa7Iwgcmg=; b=kYxafMSfrt+QxWdUmxeX0xuIc5xySHfg5JYwaIbVdEL87uGIJ8NSz0CxLjMau+ox0G OPqs4SypWeY9Th56bLxPhaEBx3EB6VNItRVTBIghIu7Jf7l4eO9rgLj+6KpOnsdmGzCB 0qVIAS3Ejag1pblEOKMfqzFqyKX1ILztcxqMwCw8XyWUcZLaVh3LwuGWNXuU5uhTgWK+ j+IFd49xEtqp75hsxNnVhncKEx9J1U4LG/64YnYcd48yBY584kjqXU6pF8m7LnmQfaHr WkI4lHeOHHpIdcNiGHYh7f6+6IVhMB7cNpIyc4u5OnhVCtgTzDuKlJ7Gxe5Yx4O0pC40 H55w== X-Gm-Message-State: APjAAAWJlQ2vhK4Buh5DEau17cKE8Wbjq9zkkX9FnupUXxF7UaIa6H4M mzS/DezgtHRkbSzfSK+gBO+0GsYIIjEPzQ== X-Google-Smtp-Source: APXvYqw2mjyinI8cBwpUiIZGwfB2Dm83baJ2YKSm/DYH7eZCHHopvinGLDszh4alNHXoq5e8BdXKlA== X-Received: by 2002:a62:f250:: with SMTP id y16mr56004321pfl.50.1564702925031; Thu, 01 Aug 2019 16:42:05 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:23 +0530 Message-Id: <20190801234031.29561-10-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 09/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 902b106954..c8e6526747 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; @@ -164,6 +167,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; @@ -264,6 +268,7 @@ static int ioq_submit(LuringState *s) QSIMPLEQ_REMOVE_HEAD(&s->io_q.submit_queue, 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) { @@ -288,12 +293,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); @@ -314,6 +322,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) { @@ -337,11 +346,14 @@ static int luring_do_submit(int fd, LuringAIOCB *luri= ngcb, LuringState *s, =20 QSIMPLEQ_INSERT_TAIL(&s->io_q.submit_queue, 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; } @@ -356,8 +368,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; } @@ -389,6 +403,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) { @@ -406,4 +421,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..66aaf8352b 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 %d" + # 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 Fri May 3 09:00:37 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=1564703224; cv=none; d=zoho.com; s=zohoarc; b=WLBt0blQQZ6Vtq9xl3F9rRDbOi0uPW4b9Sosd5dO/BpGn7YQW4NM9aLoHd7aUUg+hPliuMrM5Lqs6uTN3bRB/TnLQBTwidwczngotca/MRNMzMstn0MRN3PunMr3stV8dPU3Im+6QXZXb0bj/Ldr5sgZYZwF3y04tJMJ5c8HrnI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703224; 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=jqwyu4mBtWhJeShMhcEvRijFXLobB+NL3V3xOjbt+Qw=; b=KdJhvz/ZxoF3hoiFSSCx3FTUYV5K4JRyrAnihG8K14dFVDD7YmvFx95N6BOCE5bMFjoXRipBm6+XL7uqcis2cTqkHjAinWXSEuuOCzW5vEg/yke07JJHD/Hq6rB6j6ei8bISLHltvYaaQBthSkQ/y97ufhpR4Oasbwf0jWmnFyI= 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 1564703224011625.2889319971681; Thu, 1 Aug 2019 16:47:04 -0700 (PDT) Received: from localhost ([::1]:59772 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKml-0006Ji-2k for importer@patchew.org; Thu, 01 Aug 2019 19:47:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60849) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKiF-0007DM-JP for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKiD-0003OV-2m for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:22 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:37750) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKi7-0003Lh-4L; Thu, 01 Aug 2019 19:42:17 -0400 Received: by mail-pf1-x443.google.com with SMTP id 19so34949509pfa.4; Thu, 01 Aug 2019 16:42:12 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.42.05 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:42:10 -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=jqwyu4mBtWhJeShMhcEvRijFXLobB+NL3V3xOjbt+Qw=; b=g9DrqivkWlorJHMRZjUjiU44jjXufzqi01TiqLasEH7FvzEFknNE9UpIBDOyIVsk9D IHopBvsUsbiHvXudePqsRIwj1lD7fYw7g/9JMXBS9w4dDIOuxXK+0oeVfzHWlsQQHykj OZHPgFKsrb1HJSQrM23uQ0x02cM/o3KjMTiS3BQpAhIj3yRd6lpdaEQwrnGBLmj+3P27 2ohBagsXIHrSTuS6jUk3eVU5Nt6xsYgbYWLLH3mX6ZLEdTBbND7+y6TJrQXux+lDKEje FMHmky7A4Yy7dyc5v0wnUH+knJcdmD4ca9LYDKrxpg/q/Ah4YYoczuyGUrKqVeFiudBW NCqw== 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=jqwyu4mBtWhJeShMhcEvRijFXLobB+NL3V3xOjbt+Qw=; b=QTEE55FG4WRkfUxdKCaLlEF3H1M96l+ZuPACOsAfAU+T8/6bfMuZStkZQBN6soqp0Q WNeORc08raSHi81P+8ilURJjE5gh2z/7t8p5MDw3JUfr/BRVh/NKzlNqm2o6p0GLt0KU 2kVlHroPvbzDG+7ywvofhCpBweZ0JQ+qjqKgOSTsmrJ1e+yEO9Aays8cmrq6es51jjnO 1UftBaOJ1sAem+1GwProPO1ha4rdzsa/tBugZRiCGpoNQBMXsEBvH4hfqvxv1ktR2yln 7a3Qyc6bgxv4ge9e32Y3pagku2QzeuaCnyBx2xckB3IbFgtPvkEYE7fg0D60ZvLzbbmO BE2g== X-Gm-Message-State: APjAAAVYOHZDE4/0iyKrrF/3LwFEPPQc0oVloi4dtg40YVisk6t+I5PY 46olbQOg2OFGHkexds6AgCuMen4qlrytXg== X-Google-Smtp-Source: APXvYqwo4InSN0QwORIXhQ2RTqHMJJsHrJnCVPvR5U2XPDhvNc6Z5iOvhUXTAw3XppYhuYTrVmduTg== X-Received: by 2002:a62:15c3:: with SMTP id 186mr58297383pfv.141.1564702931311; Thu, 01 Aug 2019 16:42:11 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:24 +0530 Message-Id: <20190801234031.29561-11-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 10/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 c8e6526747..86f32e18a1 100644 --- a/block/io_uring.c +++ b/block/io_uring.c @@ -238,6 +238,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->submit_queue); @@ -395,7 +410,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 Fri May 3 09:00:37 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=1564703316; cv=none; d=zoho.com; s=zohoarc; b=hL1W7cxqRXh5NaBR0hOJoak7KOB4Bnhk6MtRV0B3xhZZpHmkVhANSLJy8eSvBc0lFoaJ9VEJIAIMciGpKHnRQ3z9T6FwUX5s+RU0W/OHyYLUrXMGKhEfthCJUvjaAGFd+B1SifeUzI2z22M//rPZgIHM8yeRVloPxhefR8zGFY4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703316; 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=ipr3iNyxvPc1pw+FEpkLWVBnB0CK9mROZwdZiLP7cbc=; b=n6Ay014UkRcqqnT42/OzHVEZhs8DG2QJXXwtlqe7WFqQTVoNTV2dUU2Rdjj5yskvdr8mYaGMvezPdY8WSbeCtcCA5Hd1AjrNXvtHGwMQI2swkSuG7wu77EhJ3/SjwuFgERAKuI7U9KAcsvLUTuitCaSzMmc/d6/+aHK2k21jcJE= 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 1564703316265257.39488330617473; Thu, 1 Aug 2019 16:48:36 -0700 (PDT) Received: from localhost ([::1]:59808 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKoF-0000eZ-9H for importer@patchew.org; Thu, 01 Aug 2019 19:48:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60875) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKiI-0007Fc-2S for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKiF-0003Qe-TE for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:25 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:34290) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKiF-0003Nb-80; Thu, 01 Aug 2019 19:42:23 -0400 Received: by mail-pg1-x541.google.com with SMTP id n9so28827867pgc.1; Thu, 01 Aug 2019 16:42:18 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.42.11 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:42:16 -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=ipr3iNyxvPc1pw+FEpkLWVBnB0CK9mROZwdZiLP7cbc=; b=uXTtlLmyGtz4fEhRzAS/eMc/qy91v4szRv/kL3zIGmtRzUbQP5zRAn2IDQdZC6j+2R wlb+/cE6XICk3UgTU5HSWCzaKtHtUIgs9gIISKqxyC5gQ+RgXUcHk0Ddz+ATKuRL27tT ofEs+F62yqBccHr1qn40g6Yd6Fm8xZkLOqoqiUkL0++jquiwhwCjlHaYT1pwS34A3A3Z nGRRWx+fvyElReTzBCIGoCvDwbgn05nrRy7sJf6165Juaa31W09DIbR5XlqvlsErb9p/ mAHj/zNSpWgZdvnGzyeev/fj/kyxctZ7Ip037bxucSEFw5uM00sXTh9wmIw2KKy0CH4v Pj0A== 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=ipr3iNyxvPc1pw+FEpkLWVBnB0CK9mROZwdZiLP7cbc=; b=LhAzsvgxeEPIKjUz+y1bsvigEhLbBflLMUrvZZcSitsE9ANsX5iWftRbbqYfuQQSVC Ln45ZKL4XkLrcZHn/zjB2LxH9s73lSClxdjFGQfIUalg0WuvWT2YNnqVJsOI51by2z64 W4c181NZwAtzcxMNbcFXwncTe06DZHmOYwtXvPcZxiZN25KYfmROt7zBlu/FUWIg8aHd Gi8aUFT75Mynlpgn05lnNqJUiM59Uyp4ZInTeMpCw6GbrZXE+nsysy1GlT4Z0jqVuygc edoW2kjZrXxPnIrSsfD7LJkI1xDkenOk0DowRcL5wjbxxfJVNI5HWyfCKi7plPCJfNU8 nN0w== X-Gm-Message-State: APjAAAVDLpXOWHj1stCDB90dfmCgKudAuEjXOvgxSARCYxnw7S/tR3tW gI7WynrET+AgFWnA9e/DU/TdRodGOnQAUQ== X-Google-Smtp-Source: APXvYqwyGgFMmkRY/U1ruYLuWPo7DAdILhS2Odyq/LqYjxPf5K7wJ9niiU4ZxWBFLSK20+WSy+xnBg== X-Received: by 2002:a65:64c4:: with SMTP id t4mr82477311pgv.298.1564702937553; Thu, 01 Aug 2019 16:42:17 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:25 +0530 Message-Id: <20190801234031.29561-12-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 11/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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-io.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/qemu-io.c b/qemu-io.c index f64eca6940..0abb4af134 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -130,7 +130,8 @@ 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" +" -k, -- use kernel AIO implementation (Linux only, prefer use of -i)\n" +" -i, -- use AIO mode (threads, native or io_uring)\n" " -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" @@ -172,7 +173,7 @@ static int open_f(BlockBackend *blk, int argc, char **a= rgv) QDict *opts; bool force_share =3D false; =20 - while ((c =3D getopt(argc, argv, "snCro:kt:d:U")) !=3D -1) { + while ((c =3D getopt(argc, argv, "snCro:ki:t:d:U")) !=3D -1) { switch (c) { case 's': flags |=3D BDRV_O_SNAPSHOT; @@ -204,6 +205,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 +299,9 @@ 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" +" -k, --native-aio use kernel AIO implementation\n" +" (Linux only, prefer use of -i)\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 +499,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:rsnCmki:t:T:U"; const struct option lopt[] =3D { { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, 'V' }, @@ -501,6 +511,7 @@ int main(int argc, char **argv) { "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' }, @@ -568,6 +579,12 @@ int main(int argc, char **argv) case 'k': flags |=3D BDRV_O_NATIVE_AIO; break; + 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) { error_report("Invalid cache option: %s", optarg); --=20 2.21.0 From nobody Fri May 3 09:00:37 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=1564703320; cv=none; d=zoho.com; s=zohoarc; b=elSd3vNla/dB6adhCdE4nHcCQNbBtxdqa8fPsJu/25ThHZ3UBUID3wZsbYMpc0hU+mlspfvdn2VzePXAswE9vy3InDxqB4+R+7HnjDNq1FpvioN+o9i1i/Zbbu/6EzNYSQuP7YxVWhWBGW7cgKxw8Tjticvi4LnNnplPjeie1gE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703320; 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=WeED2N/xrRXHqk+R3uuiNy7p3rAfCPFvDRDie7m+ELM=; b=ocIc0xmVWBgzlIJhNac937NS3vjGBkIJ+9KH85PbIPiWgsOWlSUYg4226TpB4Qxxs1Y0YxIMBfsGzX5MmY7N9MP2WonDLOrsUv7xVEiBqjuGPUXjwD7HFfOnbNEO6syVrNZjcKBglpSP5HgXq5cDR3okjsZQZg3PBdKBVsIVTx0= 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 1564703320984333.43454368603386; Thu, 1 Aug 2019 16:48:40 -0700 (PDT) Received: from localhost ([::1]:59810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKoJ-0000nF-W1 for importer@patchew.org; Thu, 01 Aug 2019 19:48:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60941) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKiJ-0007Ip-FU for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKiI-0003TE-86 for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:27 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:40475) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKiH-0003RS-7a; Thu, 01 Aug 2019 19:42:25 -0400 Received: by mail-pg1-x541.google.com with SMTP id w10so35054851pgj.7; Thu, 01 Aug 2019 16:42:24 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.42.17 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:42: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=WeED2N/xrRXHqk+R3uuiNy7p3rAfCPFvDRDie7m+ELM=; b=Gv1XNJJG/aZKueZZZhyqU5J46YtC6MD5SEFlMYE4DFd0rlb8pXf7Md7DTNYi9NOXar OcpY6Km/MfzWUSLdKtiZSjyQ+66sZqQIk2+EqK2zJTU54RIHtWTW/1Vy0UJ+WTvzfnyb Q0TRKkA2SaULN+EkwLPf49Q00eru4YfeAUpLYXtkY76cy9HcpvVOtp+isTmOWiqcSfIl eNhtwjwdL7swXPiJh0SQQevSN+Abzn7hMlvMq8cBDimiCeicl+VI/UEERcgrtKvag64Q IRVp5aRvSyeaTFvP2OEZGRantmC/BZ0VMUe2YZSef9dukNYNt4lFEHflnrUnr/RN89uG s/vQ== 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=WeED2N/xrRXHqk+R3uuiNy7p3rAfCPFvDRDie7m+ELM=; b=k8ZMENjua+LwtxEswkmrdGirUMTV0dt2TXtS0zfxmR7+tKvrfs22DazhSz2C36R6Qb uNTq/FXixzfbgc/nSnloYii8y0RKmGQOHWH1HjmRMm1e8nVNQKqgHrBFuMDytv4lXJoU l3qmvqLWDm0KVfyTDfIa1uVdhYEp8RwCcWW9cIIdSAXnWnRk40ZnOSgVftC0sWCDdC40 v7nz7qsxeMftsoNPLv0E8x6pupMv/rGJc3GuxUF2FgVP2R/wuPJ9rofRNd+LYiQ+e79c EqPI2Lc3fYeMhhpJoJGgHNJ0aEV/hPem7qjo9zCYRT1Rbgjne8P2H16GV643FWfCcb5b S8Uw== X-Gm-Message-State: APjAAAVFKGxRBJo2PnuJ9lEXKSnQEydRNk+XvwUHV6MUSP3ith08M8TJ kW30pc108QTuxJFDI4YtGvkFN4bOKjM4CQ== X-Google-Smtp-Source: APXvYqy/xCxc7gW0i283Si7AItH+WSbgemt/rObzTBv2TxbHMjtyvu+fLlJzYjJi2F1o9/KS5r6LVw== X-Received: by 2002:a63:e48:: with SMTP id 8mr34066731pgo.389.1564702943751; Thu, 01 Aug 2019 16:42:23 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:26 +0530 Message-Id: <20190801234031.29561-13-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 12/17] qemu-img: adds option to use aio engine for benchmarking 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 --- qemu-img-cmds.hx | 4 ++-- qemu-img.c | 11 ++++++++++- qemu-img.texi | 5 ++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx index 1c93e6d185..77b5a8dda8 100644 --- a/qemu-img-cmds.hx +++ b/qemu-img-cmds.hx @@ -20,9 +20,9 @@ STEXI ETEXI =20 DEF("bench", img_bench, - "bench [-c count] [-d depth] [-f fmt] [--flush-interval=3Dflush_interv= al] [-n] [--no-drain] [-o offset] [--pattern=3Dpattern] [-q] [-s buffer_siz= e] [-S step_size] [-t cache] [-w] [-U] filename") + "bench [-c count] [-d depth] [-f fmt] [--flush-interval=3Dflush_interv= al] [-n] [--no-drain] [-o offset] [--pattern=3Dpattern] [-q] [-s buffer_siz= e] [-S step_size] [-t cache] [-i aio] [-w] [-U] filename") STEXI -@item bench [-c @var{count}] [-d @var{depth}] [-f @var{fmt}] [--flush-inte= rval=3D@var{flush_interval}] [-n] [--no-drain] [-o @var{offset}] [--pattern= =3D@var{pattern}] [-q] [-s @var{buffer_size}] [-S @var{step_size}] [-t @var= {cache}] [-w] [-U] @var{filename} +@item bench [-c @var{count}] [-d @var{depth}] [-f @var{fmt}] [--flush-inte= rval=3D@var{flush_interval}] [-n] [--no-drain] [-o @var{offset}] [--pattern= =3D@var{pattern}] [-q] [-s @var{buffer_size}] [-S @var{step_size}] [-t @var= {cache}] [-i @var{aio}] [-w] [-U] @var{filename} ETEXI =20 DEF("check", img_check, diff --git a/qemu-img.c b/qemu-img.c index 79983772de..27ac33f7d7 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -4192,7 +4192,8 @@ 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:ni:o:qs:S:t:wU", long_optio= ns, + NULL); if (c =3D=3D -1) { break; } @@ -4235,6 +4236,14 @@ static int img_bench(int argc, char **argv) case 'n': flags |=3D BDRV_O_NATIVE_AIO; break; + 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': { offset =3D cvtnum(optarg); diff --git a/qemu-img.texi b/qemu-img.texi index c8e9bba515..0a2eccea85 100644 --- a/qemu-img.texi +++ b/qemu-img.texi @@ -206,7 +206,7 @@ Command description: Amends the image format specific @var{options} for the image file @var{filename}. Not all file formats support this operation. =20 -@item bench [-c @var{count}] [-d @var{depth}] [-f @var{fmt}] [--flush-inte= rval=3D@var{flush_interval}] [-n] [--no-drain] [-o @var{offset}] [--pattern= =3D@var{pattern}] [-q] [-s @var{buffer_size}] [-S @var{step_size}] [-t @var= {cache}] [-w] [-U] @var{filename} +@item bench [-c @var{count}] [-d @var{depth}] [-f @var{fmt}] [--flush-inte= rval=3D@var{flush_interval}] [-n] [-i @var{aio}][--no-drain] [-o @var{offse= t}] [--pattern=3D@var{pattern}] [-q] [-s @var{buffer_size}] [-S @var{step_s= ize}] [-t @var{cache}] [-w] [-U] @var{filename} =20 Run a simple sequential I/O benchmark on the specified image. If @code{-w}= is specified, a write test is performed, otherwise a read test is performed. @@ -227,6 +227,9 @@ If @code{-n} is specified, the native AIO backend is us= ed if possible. On Linux, this option only works if @code{-t none} or @code{-t directsync} is specified as well. =20 +If @code{-i} is specified, aio option can be used to specify different AIO +backends: @var{threads}, @var{native} or @var{io_uring}. + For write tests, by default a buffer filled with zeros is written. This ca= n be overridden with a pattern byte specified by @var{pattern}. =20 --=20 2.21.0 From nobody Fri May 3 09:00:37 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=1564703392; cv=none; d=zoho.com; s=zohoarc; b=GpB8/h86sh5VSXdlHZeUu2CMGqkcCmz97CM/PBTjILxrhwRgGoC3hntK+KI4syQrPR4mD4LNWgkv9yaWHLtguz5vW8Jy2DDRN/n3BhtG2ufuypHFUuZZlnXAREVTCjhKTJ5pNaVNqT5vhlt1r+YExpZ+tsYjl9YQgK1B1vZ+hf4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703392; 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=g0K4nld1/KlLZhCdPIvk0WNLZIE9E/uK4u0beC76QwY=; b=Im0Y4/atbAkEt1As/YJLCAbJQ5VP8rd9QPbou0g9C0zsI09FGjAOcZqzXmPad6i47ZetJRnN4vshqlVjuBXGNs6UZgRz7X3yFhIgju0NRTxPoi6/YypfW/W2KhYCtCgvDb3N0vjEN/GRcWLXxfBhmKWFBBN3sT2e+gnNSYNDh9E= 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 1564703392254911.4549436675587; Thu, 1 Aug 2019 16:49:52 -0700 (PDT) Received: from localhost ([::1]:59832 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKpT-0002fE-B7 for importer@patchew.org; Thu, 01 Aug 2019 19:49:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32888) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKiT-0007YI-IY for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKiS-0003dS-24 for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:37 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:41298) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKiQ-0003aI-5i; Thu, 01 Aug 2019 19:42:34 -0400 Received: by mail-pf1-x441.google.com with SMTP id m30so34965962pff.8; Thu, 01 Aug 2019 16:42:33 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.42.24 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:42:31 -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=g0K4nld1/KlLZhCdPIvk0WNLZIE9E/uK4u0beC76QwY=; b=BaK/ICHt2M3Q7tAxYg/Aq6azr7ZK2Bmj7ZRWNPbN9+TSH6iTS7mwuf0IMvIkAg4RCa /1afST0XY15IscBFBTMOBZY/3PMzYMVLrs8tWHrdNxmbXfVXTnoVAyFopFkkQqEQwEZT ZGFcqweRQYMV8pFFkRiPt2K86LMNzvX2jzXZFbIHqqe7c7ZXZyiySDcuYqUFKmi1kT2R rzsNachVdzKjUoymfikjyythpBb329aXBIt/rJdttciqdlZhPupj69r6OXor0kyCL0kF YAwupyBBhmPNgx8eRnsBk0qUYSbD/ptay6QnkUUbRq3YN1zBis6OtMrSkMyb2f5smJo1 vC6w== 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=g0K4nld1/KlLZhCdPIvk0WNLZIE9E/uK4u0beC76QwY=; b=cGb3ZgoryZAkNO3Y/EN9BBHA9k1GxfO3wMEUlMt1F1yIdNauGAseM4kuWFmGeLHbQR Yf41WXyQPuq2Yn+XtnNOf75R9Db+/NbL+yRP7D7tDGvtoHjm94Yaooe+KD6DcTizeVw/ J+fYmB208YkAqcZIlISByVZEL2WVHQwNpVa2hsokef1vSVskC4IWKA1ENoK5xAvABs/A JBBdD5RrkfS9XTkzvQGFYHZID53IKALLtihLGBAKQHs1olzXjcHi++K5zrwtpUaMkDDa yzpyoaLcf64TISMOSBOaPZ9EKAA9z4w6QTu5p5HwGV30zvsR++7Q5ZpX7gVNcBu1h8Ha yj2w== X-Gm-Message-State: APjAAAVauq8rDMXITQhlmhzPaJysjmVMHODGiiX6y/dJfMzdNakK9q1a YvWvrLQ0vPLRfpymc7lmUBThtgxgp6pDjg== X-Google-Smtp-Source: APXvYqwJBzCoItMLqCLs8bNcjONWc6NgjBKjiOr05qI6AeafiuMMDjUsZVvXagxH8P8kmtZCLfCEMw== X-Received: by 2002:a63:2364:: with SMTP id u36mr117542082pgm.449.1564702951868; Thu, 01 Aug 2019 16:42:31 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:27 +0530 Message-Id: <20190801234031.29561-14-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 13/17] 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 Acked-by: Eric Blake --- qemu-nbd.c | 12 ++++-------- qemu-nbd.texi | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/qemu-nbd.c b/qemu-nbd.c index a8cb39e510..7bb479f3c0 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: diff --git a/qemu-nbd.texi b/qemu-nbd.texi index 7f55657722..3ee3e4bdee 100644 --- a/qemu-nbd.texi +++ b/qemu-nbd.texi @@ -77,8 +77,8 @@ as an read-only device, @var{snapshot_param} format is The cache mode to be used with the file. See the documentation of the emulator's @code{-drive cache=3D...} option for allowed values. @item --aio=3D@var{aio} -Set the asynchronous I/O mode between @samp{threads} (the default) -and @samp{native} (Linux only). +Set the asynchronous I/O mode between @samp{threads} (the default), +@samp{native} (Linux only) and @samp{io_uring} (Linux 5.1+). @item --discard=3D@var{discard} Control whether @dfn{discard} (also known as @dfn{trim} or @dfn{unmap}) requests are ignored or passed to the filesystem. @var{discard} is one of --=20 2.21.0 From nobody Fri May 3 09:00:37 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=1564703443; cv=none; d=zoho.com; s=zohoarc; b=B/8fQG2XsQgaAQ30pxPflrqVhYmND4VPsxvqswXLYmQ8nSQ6FfaThoB2cyiQw837XchNAQVcXa9dllj3O/q+9beFz2gmvsTHiRkZM3yxwOrTkH6u0w35xJLu4CQsVH2tInn9LqV6K2pAI0+T8Dz8tYvsFZGkR5nO0ZDhd+Ute/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703443; 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=IkdMZ1ySU5K9IoJU/TAak65ZSyC3YEsojkXSiNxLvTQ=; b=hyer550jP9jVWovs6mGPNLWtJv1aZwKxp8whponZcuz3Uvkfdj/FBjGnfULI3vp26gUOp+9N3oMb/ggSVZrSjqVIPRMrHZzE7yS/dpLOPOy4HAATVhflDdovp0ydZ5XVAAbm94tMTciFoEcpy5DeTRyuIzSVpsSviu6urvJAYio= 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 1564703443436764.7404310954652; Thu, 1 Aug 2019 16:50:43 -0700 (PDT) Received: from localhost ([::1]:59852 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKqI-0004bi-Gf for importer@patchew.org; Thu, 01 Aug 2019 19:50:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32919) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKiY-0007d2-0X for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKiW-0003gm-I0 for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:41 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]:34160) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKiW-0003fp-B5; Thu, 01 Aug 2019 19:42:40 -0400 Received: by mail-pf1-x433.google.com with SMTP id b13so34953780pfo.1; Thu, 01 Aug 2019 16:42:40 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.42.32 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:42:38 -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=IkdMZ1ySU5K9IoJU/TAak65ZSyC3YEsojkXSiNxLvTQ=; b=DyuhMEx8ZfB0/vNvAgyRo5rficWwNFxCStGOnRbdr7MPD228ZwQfaaFGp+f7p7UPjG D5uCqg8+ZflqQkBTSQU3ZnG+0e2DXJOsZKSSLsyVLPGTXh7JhFrrLe8NETjDil9aJE8m S2fdYouXgZ8wXKxPOQsTOPRZnX0VYeppz7dvITKbMAFNtjbDh9apZqe0uqDkDpDl917M /wm9pLX4QipU+uHf87ybiNy3eMJZo3DC2Qoxr5F7aq3Xu4CQ0Aqf0Gcgm8z7XJlLCOW+ 3xeXneQZSLgI8J15vIln/CPwXYR4DchNB6Xrtz8d0d8NyuSxAYvRGXfufdO23EJxtXaV p4yw== 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=IkdMZ1ySU5K9IoJU/TAak65ZSyC3YEsojkXSiNxLvTQ=; b=dhRmC7Fi1oczKajn5XdcbEnLZsLIdgVztD0oUwLVRc7fWA4hZvDfUabwYMLZ6jVqoY kgCPAl99GfROMdW3xSEs32BjQmNWaNU0p38gNBo3OJdz3g3TGS9J4nboWgh8AdgAEJ5m o5IPp5ho1Q84fBz5k876Fwt1jLeWflpIEfXbs47nuIMnYpoM5ksROGdj309i1KJBhv/r dKbIr2P6XIJZqCX/RnAR90d2tEoj2ZzAmyPm4100lTb3q640/E4l0kgPIUU6+Jrv+gDr paosndXgTv1qnUrGysNn/aLid/MkSpDHYQewH+9DGyd3RFhr0zsWZB2+IzvIFw+O2wpE oyVw== X-Gm-Message-State: APjAAAV29Kd1Mz93GfXCslwN4no65ioDOs+wn+bP3dx/xmF1V3N4yjgU wc9hqm2M5hB7F+eyn+uzpM/pdfCrPPWwgw== X-Google-Smtp-Source: APXvYqzrxcJkyrEvAGW2yBmB4YhwQz5hroDzHegvdTpB5nGuklYb1OETgUY8KUqQV4jxw5UUksrgQw== X-Received: by 2002:a17:90a:f488:: with SMTP id bx8mr1293794pjb.91.1564702958794; Thu, 01 Aug 2019 16:42:38 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:28 +0530 Message-Id: <20190801234031.29561-15-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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::433 Subject: [Qemu-devel] [PATCH v9 14/17] tests/qemu-iotests: enable testing with 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 --- tests/qemu-iotests/check | 15 ++++++++++++++- tests/qemu-iotests/common.rc | 14 ++++++++++++++ tests/qemu-iotests/iotests.py | 9 ++++++++- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check index c24874ff4a..1e398923fd 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,11 @@ s/ .*//p CACHEMODE_IS_DEFAULT=3Dfalse cachemode=3Dfalse continue + elif $aiomode + then + AIOMODE=3D"$r" + aiomode=3Dfalse + continue fi =20 xpand=3Dtrue @@ -269,6 +276,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 +441,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 +526,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..03f4a1cd7f 100644 --- a/tests/qemu-iotests/common.rc +++ b/tests/qemu-iotests/common.rc @@ -490,6 +490,20 @@ _default_cache_mode() return fi } +_supported_aio_modes() +{ + for mode; do + if [ "$mode" =3D "$AIOMODE" ]; then + return + fi + done + _notrun "not suitable for aio mode: $AIOMODE" +} +_default_aio_mode() +{ + AIOMODE=3D"$1" + QEMU_IO=3D"$QEMU_IO --aio $1" +} =20 _unsupported_imgopts() { diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index ce74177ab1..76f1ab0945 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -58,6 +58,7 @@ imgproto =3D os.environ.get('IMGPROTO', 'file') test_dir =3D os.environ.get('TEST_DIR') output_dir =3D os.environ.get('OUTPUT_DIR', '.') cachemode =3D os.environ.get('CACHEMODE') +aiomode =3D os.environ.get('AIOMODE') qemu_default_machine =3D os.environ.get('QEMU_DEFAULT_MACHINE') =20 socket_scm_helper =3D os.environ.get('SOCKET_SCM_HELPER', 'socket_scm_help= er') @@ -457,6 +458,7 @@ class VM(qtest.QEMUQtestMachine): options.append('file=3D%s' % path) options.append('format=3D%s' % format) options.append('cache=3D%s' % cachemode) + options.append('aio=3D%s' % aiomode) =20 if opts: options.append(opts) @@ -799,6 +801,10 @@ def verify_cache_mode(supported_cache_modes=3D[]): if supported_cache_modes and (cachemode not in supported_cache_modes): notrun('not suitable for this cache mode: %s' % cachemode) =20 +def verify_aio_mode(supported_aio_modes=3D[]): + if supported_aio_modes and (aiomode not in supported_aio_modes): + notrun('not suitable for this aio mode: %s' % aiomode) + def supports_quorum(): return 'quorum' in qemu_img_pipe('--help') =20 @@ -843,7 +849,7 @@ def skip_if_unsupported(required_formats=3D[], read_onl= y=3DFalse): return skip_test_decorator =20 def main(supported_fmts=3D[], supported_oses=3D['linux'], supported_cache_= modes=3D[], - unsupported_fmts=3D[]): + supported_aio_modes=3D[], unsupported_fmts=3D[]): '''Run tests''' =20 global debug @@ -861,6 +867,7 @@ def main(supported_fmts=3D[], supported_oses=3D['linux'= ], supported_cache_modes=3D[], verify_image_format(supported_fmts, unsupported_fmts) verify_platform(supported_oses) verify_cache_mode(supported_cache_modes) + verify_aio_mode(supported_aio_modes) =20 if debug: output =3D sys.stdout --=20 2.21.0 From nobody Fri May 3 09:00:37 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=1564703270; cv=none; d=zoho.com; s=zohoarc; b=TTUiPKm5HdScJAIQVWUTbUlQ/VWhK3+ZB7Fj3p/9XvWmDhuAAavengW9brFO8bZqRIXfidC3NC10Qjg6FQzxJNA3jMt0wLuLxAWEVNEjp7LOUc/TVqaJQoBKCHRnckvMA8wRuiXJLREz9E3isYCAstNAJpphDO2bDnr0HxVEwOM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703270; 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=KdKcJ85/JvrdjzDPkuDe3haP60+QMnxCxAmkdd7Z4Xg=; b=cVesRjH1MFmLthkQLBvCkJoWIf55muWSLZBJrXurbi9mvQXlCf/dez2giwyvtWjOvhcfJ1LAAc4OfEocSzW5QI7WIJclueqKZvbnXDqCynKzvnXJ0Ad8ntN0pwvZ+HIGiwy6QpFPnG+NMWakGVIs87Fw0ZihRQ4UMVMydhpyGHo= 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 1564703270212171.90733220575316; Thu, 1 Aug 2019 16:47:50 -0700 (PDT) Received: from localhost ([::1]:59782 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKnP-0007Qh-LG for importer@patchew.org; Thu, 01 Aug 2019 19:47:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33022) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKie-0007nT-P8 for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKic-0003lI-O2 for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:48 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:34310) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKic-0003jk-BD; Thu, 01 Aug 2019 19:42:46 -0400 Received: by mail-pf1-x442.google.com with SMTP id b13so34953891pfo.1; Thu, 01 Aug 2019 16:42:46 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.42.39 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:42:44 -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=KdKcJ85/JvrdjzDPkuDe3haP60+QMnxCxAmkdd7Z4Xg=; b=rWFxTYh+mUPpUwWPos880JAOyCw/0DB1o3S6LEWEv27BeEFgrd2QVqO0UKEHIRWRm4 EPSdILIJyddmS+U3efKLy60+rMNWaFtTja/SvGdJG+XaXDQAjQiX5o6liPAbMHl7qX9A PAb3Xj+rAwKTCnyfCNfLbAk6vv2ufLLSSp3QvSEMhnc4SHGGAIyZPCb2eMgxveBEMLer /b/tRfivW1mxqj8853ZuKw+KnhJXIKYUnvYsbSdiX1sjNRfywfWEQwNc15Kec5y6lA5c VnT+7EHB+pyjoUeT3gcuu+uupJLMOLvqCm814qGOxuBIftFy+7bejQDAzXhT5VIzo1RI ScDw== 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=KdKcJ85/JvrdjzDPkuDe3haP60+QMnxCxAmkdd7Z4Xg=; b=oRUdlzcUWy1VUV78b0NRt36EYRUtDrSRAclN2l4W2D57+GpAZXX59Bj7BLoMlj7EMV iI7RvO2ZITLVqz0yjULeNG5XOcI3uwKmH9oUxbwaHVcp/hCZSqj6Gjqu3puF57l4uZkm roE7SjXV7HdzKrPd4W8ckzD/u35zF6MsPd+ihnJqcM3Rrsz2OFHBFwAyuDYMMOcnjmd4 fZVL+GPfTXJbh5Tmy3nCFNYWdJxzO/wHe7Ckvl+PJ5/abLnj0tPVW3Z57RZFZEuhY6Dt rEDtsDI5Gl1hy+1MQ17HdxWLcqJ65YkpLju3RE1qsF+YUUHCb+Rnus/vWLAm3xMTtud6 eHpw== X-Gm-Message-State: APjAAAWPU09E4XrizrT7R0swc8QnadeGEAHSbJ3LAfauCxCXG9gsSyoG cuw7rXEajecVgGfYq16UKs39ahWFo5E+Pw== X-Google-Smtp-Source: APXvYqwLmGhwlZWR5uxO+4D2TyFq7jo+mNVf+Vfn/YeY5hGZyrzquTsJXFVNdC02oV/xecJNBR8sIw== X-Received: by 2002:a62:640c:: with SMTP id y12mr55392875pfb.166.1564702964831; Thu, 01 Aug 2019 16:42:44 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:29 +0530 Message-Id: <20190801234031.29561-16-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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::442 Subject: [Qemu-devel] [PATCH v9 15/17] tests/qemu-iotests: use AIOMODE with various tests 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 --- tests/qemu-iotests/028 | 3 ++- tests/qemu-iotests/058 | 2 +- tests/qemu-iotests/089 | 4 ++-- tests/qemu-iotests/091 | 7 ++++--- tests/qemu-iotests/109 | 3 ++- tests/qemu-iotests/147 | 5 +++-- tests/qemu-iotests/181 | 10 +++++----- tests/qemu-iotests/183 | 7 ++++--- tests/qemu-iotests/185 | 17 ++++++++++++----- tests/qemu-iotests/200 | 3 ++- tests/qemu-iotests/201 | 10 +++++----- 11 files changed, 42 insertions(+), 29 deletions(-) diff --git a/tests/qemu-iotests/028 b/tests/qemu-iotests/028 index 01f495912f..59e7b670ed 100755 --- a/tests/qemu-iotests/028 +++ b/tests/qemu-iotests/028 @@ -108,7 +108,8 @@ echo block-backup echo =20 qemu_comm_method=3D"monitor" -_launch_qemu -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},id=3Ddisk +_launch_qemu -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},aio=3D${AIOM= ODE},\ +id=3Ddisk h=3D$QEMU_HANDLE QEMU_COMM_TIMEOUT=3D1 =20 diff --git a/tests/qemu-iotests/058 b/tests/qemu-iotests/058 index 8c3212a72f..38d1ed90c0 100755 --- a/tests/qemu-iotests/058 +++ b/tests/qemu-iotests/058 @@ -64,7 +64,7 @@ nbd_snapshot_img=3D"nbd:unix:$nbd_unix_socket" converted_image=3D$TEST_IMG.converted =20 # Use -f raw instead of -f $IMGFMT for the NBD connection -QEMU_IO_NBD=3D"$QEMU_IO -f raw --cache=3D$CACHEMODE" +QEMU_IO_NBD=3D"$QEMU_IO -f raw --cache=3D$CACHEMODE --aio=3D$AIOMODE" =20 echo echo "=3D=3D preparing image =3D=3D" diff --git a/tests/qemu-iotests/089 b/tests/qemu-iotests/089 index ad029f1f09..059ad75e28 100755 --- a/tests/qemu-iotests/089 +++ b/tests/qemu-iotests/089 @@ -64,7 +64,7 @@ $QEMU_IO -c 'write -P 42 0 512' -c 'write -P 23 512 512' \ =20 $QEMU_IMG convert -f raw -O $IMGFMT "$TEST_IMG.base" "$TEST_IMG" =20 -$QEMU_IO_PROG --cache $CACHEMODE \ +$QEMU_IO_PROG --cache $CACHEMODE --aio $AIOMODE \ -c 'read -P 42 0 512' -c 'read -P 23 512 512' \ -c 'read -P 66 1024 512' "json:{ \"driver\": \"$IMGFMT\", @@ -111,7 +111,7 @@ $QEMU_IO -c 'write -P 42 0x38000 512' "$TEST_IMG" | _fi= lter_qemu_io =20 # The "image.filename" part tests whether "a": { "b": "c" } and "a.b": "c"= do # the same (which they should). -$QEMU_IO_PROG --cache $CACHEMODE \ +$QEMU_IO_PROG --cache $CACHEMODE --aio $AIOMODE \ -c 'read -P 42 0x38000 512' "json:{ \"driver\": \"$IMGFMT\", \"file\": { diff --git a/tests/qemu-iotests/091 b/tests/qemu-iotests/091 index d62ef18a02..78741d3fe7 100755 --- a/tests/qemu-iotests/091 +++ b/tests/qemu-iotests/091 @@ -60,14 +60,15 @@ echo =3D=3D=3D Starting QEMU VM1 =3D=3D=3D echo =20 qemu_comm_method=3D"monitor" -_launch_qemu -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},id=3Ddisk +_launch_qemu -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},aio=3D${AIOM= ODE},\ + id=3Ddisk h1=3D$QEMU_HANDLE =20 echo echo =3D=3D=3D Starting QEMU VM2 =3D=3D=3D echo -_launch_qemu -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},id=3Ddisk \ - -incoming "exec: cat '${MIG_FIFO}'" +_launch_qemu -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},aio=3D${AIOM= ODE},\ + id=3Ddisk -incoming "exec: cat '${MIG_FIFO}'" h2=3D$QEMU_HANDLE =20 echo diff --git a/tests/qemu-iotests/109 b/tests/qemu-iotests/109 index 9897ceb6cd..451709689a 100755 --- a/tests/qemu-iotests/109 +++ b/tests/qemu-iotests/109 @@ -52,7 +52,8 @@ run_qemu() local qmp_format=3D"$3" local qmp_event=3D"$4" =20 - _launch_qemu -drive file=3D"${source_img}",format=3Draw,cache=3D${CACH= EMODE},id=3Dsrc + _launch_qemu -drive file=3D"${source_img}",format=3Draw,cache=3D${CACH= EMODE},\ + aio=3D${AIOMODE},id=3Dsrc _send_qemu_cmd $QEMU_HANDLE "{ 'execute': 'qmp_capabilities' }" "retur= n" =20 _send_qemu_cmd $QEMU_HANDLE \ diff --git a/tests/qemu-iotests/147 b/tests/qemu-iotests/147 index 2d84fddb01..632973b23c 100755 --- a/tests/qemu-iotests/147 +++ b/tests/qemu-iotests/147 @@ -24,7 +24,7 @@ import socket import stat import time import iotests -from iotests import cachemode, imgfmt, qemu_img, qemu_nbd, qemu_nbd_early_= pipe +from iotests import cachemode, aiomode, imgfmt, qemu_img, qemu_nbd, qemu_n= bd_early_pipe =20 NBD_PORT_START =3D 32768 NBD_PORT_END =3D NBD_PORT_START + 1024 @@ -134,7 +134,8 @@ class BuiltinNBD(NBDBlockdevAddBase): self.server.add_drive_raw('if=3Dnone,id=3Dnbd-export,' + 'file=3D%s,' % test_img + 'format=3D%s,' % imgfmt + - 'cache=3D%s' % cachemode) + 'cache=3D%s' % cachemode + + 'aio=3D%s' % aiomode) self.server.launch() =20 def tearDown(self): diff --git a/tests/qemu-iotests/181 b/tests/qemu-iotests/181 index e317e63422..547c1b47b0 100755 --- a/tests/qemu-iotests/181 +++ b/tests/qemu-iotests/181 @@ -58,21 +58,21 @@ qemu_comm_method=3D"monitor" =20 if [ "$IMGOPTSSYNTAX" =3D "true" ]; then _launch_qemu \ - -drive "${TEST_IMG}",cache=3D${CACHEMODE},id=3Ddisk + -drive "${TEST_IMG}",cache=3D${CACHEMODE},aio=3D$AIOMODE,id=3Ddisk else _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},driver=3D$IMGFMT,= id=3Ddisk + -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},aio=3D$AIOMODE,dr= iver=3D$IMGFMT,id=3Ddisk fi src=3D$QEMU_HANDLE =20 if [ "$IMGOPTSSYNTAX" =3D "true" ]; then _launch_qemu \ - -drive "${TEST_IMG}",cache=3D${CACHEMODE},id=3Ddisk \ + -drive "${TEST_IMG}",cache=3D${CACHEMODE},aio=3D$AIOMODE,id=3Ddisk= \ -incoming "unix:${MIG_SOCKET}" else _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},driver=3D$IMGFMT,= id=3Ddisk \ - -incoming "unix:${MIG_SOCKET}" + -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},aio=3D$AIOMODE,dr= iver=3D$IMGFMT,\ + id=3Ddisk -incoming "unix:${MIG_SOCKET}" fi dest=3D$QEMU_HANDLE =20 diff --git a/tests/qemu-iotests/183 b/tests/qemu-iotests/183 index fbe5a99beb..b16db9466d 100755 --- a/tests/qemu-iotests/183 +++ b/tests/qemu-iotests/183 @@ -56,13 +56,14 @@ echo qemu_comm_method=3D"qmp" =20 _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,driver=3D$IMGFMT,id=3Dd= isk + -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,aio=3D$AIOMODE,\ + driver=3D$IMGFMT,id=3Ddisk src=3D$QEMU_HANDLE _send_qemu_cmd $src "{ 'execute': 'qmp_capabilities' }" 'return' =20 _launch_qemu \ - -drive file=3D"${TEST_IMG}.dest",cache=3D$CACHEMODE,driver=3D$IMGFMT,i= d=3Ddisk \ - -incoming "unix:${MIG_SOCKET}" + -drive file=3D"${TEST_IMG}.dest",cache=3D$CACHEMODE,aio=3D$AIOMODE,\ + driver=3D$IMGFMT,id=3Ddisk -incoming "unix:${MIG_SOCKET}" dest=3D$QEMU_HANDLE _send_qemu_cmd $dest "{ 'execute': 'qmp_capabilities' }" 'return' =20 diff --git a/tests/qemu-iotests/185 b/tests/qemu-iotests/185 index 454ff600cc..1c74a0ef5a 100755 --- a/tests/qemu-iotests/185 +++ b/tests/qemu-iotests/185 @@ -54,7 +54,8 @@ echo qemu_comm_method=3D"qmp" =20 _launch_qemu \ - -drive file=3D"${TEST_IMG}.base",cache=3D$CACHEMODE,driver=3D$IMGFMT,i= d=3Ddisk + -drive file=3D"${TEST_IMG}.base",cache=3D$CACHEMODE,aio=3D$AIOMODE,\ + driver=3D$IMGFMT,id=3Ddisk h=3D$QEMU_HANDLE _send_qemu_cmd $h "{ 'execute': 'qmp_capabilities' }" 'return' =20 @@ -125,7 +126,8 @@ echo =3D=3D=3D Start active commit job and exit qemu = =3D=3D=3D echo =20 _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,driver=3D$IMGFMT,id=3Dd= isk + -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,aio=3D$AIOMODE,driver= =3D$IMGFMT,\ + id=3Ddisk h=3D$QEMU_HANDLE _send_qemu_cmd $h "{ 'execute': 'qmp_capabilities' }" 'return' =20 @@ -147,7 +149,8 @@ echo =3D=3D=3D Start mirror job and exit qemu =3D=3D=3D echo =20 _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,driver=3D$IMGFMT,id=3Dd= isk + -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,aio=3D$AIOMODE,driver= =3D$IMGFMT,\ + id=3Ddisk h=3D$QEMU_HANDLE _send_qemu_cmd $h "{ 'execute': 'qmp_capabilities' }" 'return' =20 @@ -172,7 +175,9 @@ echo =3D=3D=3D Start backup job and exit qemu =3D=3D=3D echo =20 _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,driver=3D$IMGFMT,id=3Dd= isk + _launch_qemu \ + -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,aio=3D$AIOMODE,driver= =3D$IMGFMT,\ + id=3Ddisk h=3D$QEMU_HANDLE _send_qemu_cmd $h "{ 'execute': 'qmp_capabilities' }" 'return' =20 @@ -196,7 +201,9 @@ echo =3D=3D=3D Start streaming job and exit qemu =3D=3D= =3D echo =20 _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,driver=3D$IMGFMT,id=3Dd= isk + _launch_qemu \ + -drive file=3D"${TEST_IMG}",cache=3D$CACHEMODE,aio=3D$AIOMODE,driver= =3D$IMGFMT,\ + id=3Ddisk h=3D$QEMU_HANDLE _send_qemu_cmd $h "{ 'execute': 'qmp_capabilities' }" 'return' =20 diff --git a/tests/qemu-iotests/200 b/tests/qemu-iotests/200 index 72d431f251..b554dd947b 100755 --- a/tests/qemu-iotests/200 +++ b/tests/qemu-iotests/200 @@ -66,7 +66,8 @@ echo =3D=3D=3D Starting QEMU VM =3D=3D=3D echo qemu_comm_method=3D"qmp" _launch_qemu -object iothread,id=3Diothread0 $virtio_scsi \ - -drive file=3D"${TEST_IMG}",media=3Ddisk,if=3Dnone,cache=3D$C= ACHEMODE,id=3Ddrive_sysdisk,format=3D$IMGFMT \ + -drive file=3D"${TEST_IMG}",media=3Ddisk,if=3Dnone,cache=3D$C= ACHEMODE,\ + aio=3D$AIOMODE,id=3Ddrive_sysdisk,format=3D$IMGFMT \ -device scsi-hd,drive=3Ddrive_sysdisk,bus=3Dscsi0.0,id=3Dsysd= isk,bootindex=3D0 h1=3D$QEMU_HANDLE =20 diff --git a/tests/qemu-iotests/201 b/tests/qemu-iotests/201 index 7abf740fe4..48837c4f30 100755 --- a/tests/qemu-iotests/201 +++ b/tests/qemu-iotests/201 @@ -58,21 +58,21 @@ qemu_comm_method=3D"monitor" =20 if [ "$IMGOPTSSYNTAX" =3D "true" ]; then _launch_qemu \ - -drive "${TEST_IMG}",cache=3D${CACHEMODE},id=3Ddisk + -drive "${TEST_IMG}",cache=3D${CACHEMODE},aio=3D$AIOMODE,id=3Ddisk else _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},driver=3D$IMGFMT,= id=3Ddisk + -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},aio=3D$AIOMODE,dr= iver=3D$IMGFMT,id=3Ddisk fi src=3D$QEMU_HANDLE =20 if [ "$IMGOPTSSYNTAX" =3D "true" ]; then _launch_qemu \ - -drive "${TEST_IMG}",cache=3D${CACHEMODE},id=3Ddisk \ + -drive "${TEST_IMG}",cache=3D${CACHEMODE},aio=3D$AIOMODE,id=3Ddisk= \ -incoming "unix:${MIG_SOCKET}" else _launch_qemu \ - -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},driver=3D$IMGFMT,= id=3Ddisk \ - -incoming "unix:${MIG_SOCKET}" + -drive file=3D"${TEST_IMG}",cache=3D${CACHEMODE},aio=3D$AIOMODE,dr= iver=3D$IMGFMT,\ + id=3Ddisk -incoming "unix:${MIG_SOCKET}" fi dest=3D$QEMU_HANDLE =20 --=20 2.21.0 From nobody Fri May 3 09:00:37 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=1564703397; cv=none; d=zoho.com; s=zohoarc; b=UqSpvzYl44vo0MyDObg/XW47oqmi4k5mjmvqw/zUD06Rr5RrgtIcnqbTj0z8P6eNhmEOVYxXgW+qGkIx/uqgzVNvaE/WYBZeQntqNRECRubyipzrjmUtWrnZ6viQRz2x0axPXdg083e5uHb9+YtnOTE/Uv35lliCkXbNPXUpZaU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703397; 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=tjzNpLM2BOfkDI4Z/y396mBvH1SrcQto63wfXq3jE/w=; b=em/NbSMupGQ03xQLPYr4+NyJ4Ih49ZiT3+W3vCEHfT9/6ylHygWPewVk4PnylfCzDr430l2hANzIlZwGloIGm0OQQf65kwjdN43KSEvN1A5i5dK/DScLBAAVYlJyl4d9uiOToyo4rpHy4CWOAhJgnU2sC8HzcmNnmbd4schH55o= 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 1564703397782123.05819569582798; Thu, 1 Aug 2019 16:49:57 -0700 (PDT) Received: from localhost ([::1]:59834 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKpY-0002sq-Sv for importer@patchew.org; Thu, 01 Aug 2019 19:49:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33107) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKiq-0007tI-DO for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:43:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKim-0003uG-VQ for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:42:58 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:46901) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKii-0003pK-Kd; Thu, 01 Aug 2019 19:42:52 -0400 Received: by mail-pl1-x644.google.com with SMTP id c2so32843160plz.13; Thu, 01 Aug 2019 16:42:52 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.42.45 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:42:50 -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=tjzNpLM2BOfkDI4Z/y396mBvH1SrcQto63wfXq3jE/w=; b=Os27WHrweq1S6Yl+xZkwzwWoQF6QbiCOSMEzwGLoABS9xO3p+Rh0BsnY1meSbbQKUV 2E5Y+bHlqeUtKNfN0ONgrYMRUk7Dz+7Kl1Bu7lCHHjMZYZFDxcFx/W2iaYr0eINJzJ60 3aihRZNJyY1kkT4jZaKJa3Rf367RCtpYY1ssexqLfATK20i5rCAiqlSE2O5kJ1qM8QBQ jAxIUDgw69WJi52WIQioRqHmJ6G6acAvKW8cCXOQ1vLW8EK1Ksy+izuKXBzOzSu/jGZE fbaaf4xzx84VtQ1XzOci+wYp2ymaWirbzsYMz3/tSS0GMWmZGDNgM8aT74RDP91S5G0M BMAQ== 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=tjzNpLM2BOfkDI4Z/y396mBvH1SrcQto63wfXq3jE/w=; b=RMcmV5bcWDEsUhQBJghpEgteFzoYsUD5ES08yCR2Q1nFMzCNIg4M2neJ5H3kB5Pi3A 1ylcZO6xrOImCAOrFy+LN6ieMr8OPu+L9OR0oGUrFOFi6+CpD8FwcG//5zQbrfa6oSXe fkJBce9wpxBiP9FVSp4DKWqwlNKh8WsMKfDw4ObwUWnc6jNudiWDNnnfMPPqFr8oS3/z Cs4CEuH42jCz9H5TD/8M/vVHvOVl3sg1PZY5XuxrRcVmHiq7Mzh5Eqp4bKQ+fusKu7k+ wGvIX8ZVRySpEHNp1nYfFKWZtWHLTQiVkYOoJwlieiY9QqQX7C2Ht05TJCW4qj+KFOj0 ydnA== X-Gm-Message-State: APjAAAV7SOuE6sViBi0MbDcTaFAOc3hzEHFnLFeGOz5sTVQnrNgM4g7P pCehlBbAn+ZZRfxp7mMslZAxgWS0CPeL4A== X-Google-Smtp-Source: APXvYqyZxlSgSMfruui2ZMMuEAJBucP2NSFkZ9vp0HB+ZAh/R3gMX772GVn+aE3JyKV5oH3rMK/I8w== X-Received: by 2002:a17:902:28e9:: with SMTP id f96mr123329422plb.114.1564702970995; Thu, 01 Aug 2019 16:42:50 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:30 +0530 Message-Id: <20190801234031.29561-17-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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 v9 16/17] block/io_uring: adds fd registration 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 --- block/io_uring.c | 107 ++++++++++++++++++++++++++++++++++++++++++++- block/trace-events | 1 + 2 files changed, 107 insertions(+), 1 deletion(-) diff --git a/block/io_uring.c b/block/io_uring.c index 86f32e18a1..1553cd2e58 100644 --- a/block/io_uring.c +++ b/block/io_uring.c @@ -45,10 +45,16 @@ typedef struct LuringQueue { QSIMPLEQ_HEAD(, LuringAIOCB) submit_queue; } LuringQueue; =20 +typedef struct LuringFd { + int *fd_array; + GHashTable *fd_lookup; +} LuringFd; + typedef struct LuringState { AioContext *aio_context; =20 struct io_uring ring; + LuringFd fd_reg; =20 /* io queue for submit at batch. Protected by AioContext lock. */ LuringQueue io_q; @@ -306,6 +312,94 @@ static int ioq_submit(LuringState *s) return ret; } =20 +/** + * luring_fd_register: + * + * Register file descriptors, see luring_fd_lookup + */ +static int luring_fd_register(struct io_uring *ring, LuringFd *fd_reg, int= fd) +{ + int ret, nr; + GHashTable *lookup =3D fd_reg->fd_lookup; + nr =3D g_hash_table_size(lookup); + + /* If adding new, API requires older registrations to be removed */ + if (nr) { + /* + * See linux b19062a56726, register needs the ring mutex, any + * submission in progress will complete before unregistering begins + * and new ones will have to wait. + */ + ret =3D io_uring_unregister_files(ring); + if (ret < 0) { + return ret; + } + } + + fd_reg->fd_array =3D g_realloc_n(fd_reg->fd_array, nr + 1, sizeof(int)= ); + fd_reg->fd_array[nr] =3D fd; + + g_hash_table_insert(lookup, GINT_TO_POINTER(fd), GINT_TO_POINTER(nr)); + trace_luring_fd_register(fd, nr); + return io_uring_register_files(ring, fd_reg->fd_array, nr + 1); +} +/** + * luring_fd_unregister: + * + * Unregisters file descriptors, TODO: error handling + */ +static void luring_fd_unregister(LuringState *s) +{ + io_uring_unregister_files(&s->ring); + g_hash_table_unref(s->fd_reg.fd_lookup); + g_free(s->fd_reg.fd_array); +} + +/** + * luring_fd_lookup: + * + * Used to lookup fd index in registered array at submission time + * If the lookup table has not been created or the fd is not in the table, + * the fd is registered. + * + * If registration errors, the hash is cleared and the fd used directly + * + * Unregistering is done at luring_detach_aio_context + */ +static int luring_fd_lookup(LuringState *s, int fd) +{ + int ret; + void *index; + GHashTable *lookup; + + if (!s->fd_reg.fd_lookup) { + s->fd_reg.fd_lookup =3D g_hash_table_new_full(g_direct_hash, + g_direct_equal, + g_free, g_free); + luring_fd_register(&s->ring, &s->fd_reg, fd); + } + lookup =3D s->fd_reg.fd_lookup; + index =3D g_hash_table_lookup(lookup, GINT_TO_POINTER(fd)); + + if (index < 0) { + ret =3D luring_fd_register(&s->ring, &s->fd_reg, fd); + + if (ret < 0) { + if (ret =3D=3D -ENOMEM || ret =3D=3D -EMFILE || + ret =3D=3D -ENXIO) { + return ret; + } else { + /* Should not reach here */ + g_hash_table_remove_all(lookup); + g_free(s->fd_reg.fd_array); + return ret; + } + } + index =3D g_hash_table_lookup(lookup, GINT_TO_POINTER(fd)); + } + return GPOINTER_TO_INT(index); +} + void luring_io_plug(BlockDriverState *bs, LuringState *s) { trace_luring_io_plug(s); @@ -337,9 +431,14 @@ void luring_io_unplug(BlockDriverState *bs, LuringStat= e *s) static int luring_do_submit(int fd, LuringAIOCB *luringcb, LuringState *s, uint64_t offset, int type) { - int ret; + int ret, fd_index; struct io_uring_sqe *sqes =3D &luringcb->sqeq; =20 + fd_index =3D luring_fd_lookup(s, fd); + if (fd_index >=3D 0) { + fd =3D fd_index; + } + switch (type) { case QEMU_AIO_WRITE: io_uring_prep_writev(sqes, fd, luringcb->qiov->iov, @@ -357,7 +456,11 @@ static int luring_do_submit(int fd, LuringAIOCB *lurin= gcb, LuringState *s, __func__, type); abort(); } + io_uring_sqe_set_data(sqes, luringcb); + if (fd_index >=3D 0) { + io_uring_sqe_set_flags(sqes, IOSQE_FIXED_FILE); + } =20 QSIMPLEQ_INSERT_TAIL(&s->io_q.submit_queue, luringcb, next); s->io_q.in_queue++; @@ -383,6 +486,7 @@ 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); @@ -399,6 +503,7 @@ int coroutine_fn luring_co_submit(BlockDriverState *bs,= LuringState *s, int fd, =20 void luring_detach_aio_context(LuringState *s, AioContext *old_context) { + luring_fd_unregister(s); aio_set_fd_handler(old_context, s->ring.ring_fd, false, NULL, NULL, NU= LL, s); qemu_bh_delete(s->completion_bh); diff --git a/block/trace-events b/block/trace-events index 66aaf8352b..13571aa182 100644 --- a/block/trace-events +++ b/block/trace-events @@ -71,6 +71,7 @@ luring_co_submit(void *bs, void *s, void *luringcb, int f= d, uint64_t offset, siz 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 %d" +luring_fd_register(int fd, int index) "fd %d index %d" =20 # qcow2.c qcow2_writev_start_req(void *co, int64_t offset, int bytes) "co %p offset = 0x%" PRIx64 " bytes %d" --=20 2.21.0 From nobody Fri May 3 09:00:37 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=1564703450; cv=none; d=zoho.com; s=zohoarc; b=XumOMUNxR+T4uZKxmB2qRGEmmO47kwOUMjX40jw6WCsBCQjkbDVC3rtlcdjKZsdluR6e0iDtc6Si7XKbJMQCMak01Jr7lYC7ujM8kH0lK5ZCp/r/nNvCNUe9ggCgKmS3Rt6m8pOcyDLYQdl0sfVJdzYxj3ovME+IWPEnWNPsK7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564703450; 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=SGET1+BaXv2xF+ZaaIzchQNPmiaNzqs+vIMzu3BZllk=; b=Usz/PZKa1pSk9+/Tn1t7sz9hrqW7c5zV6kZjGZRHm10DaUpIx4HlxAjVd1V8IPf8822CB/c8BgHTazNLC2C3GBgr1cLXXBtlpd8g3sqzqsUfT4Ix5dw9HlD03+qEJ602022QQJRLSFbPp524ImyLzvhu+shuG8jPHUQDc3P6x64= 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 1564703450586302.61570634440943; Thu, 1 Aug 2019 16:50:50 -0700 (PDT) Received: from localhost ([::1]:59854 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKqP-0004pP-ML for importer@patchew.org; Thu, 01 Aug 2019 19:50:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33229) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htKiz-00083B-8W for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:43:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htKiy-00041x-5A for qemu-devel@nongnu.org; Thu, 01 Aug 2019 19:43:09 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:41302) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htKiu-0003xq-6k; Thu, 01 Aug 2019 19:43:06 -0400 Received: by mail-pf1-x442.google.com with SMTP id m30so34966476pff.8; Thu, 01 Aug 2019 16:43:02 -0700 (PDT) Received: from localhost.localdomain ([2402:3a80:572:3de5:765:cb16:92cd:ee3e]) by smtp.gmail.com with ESMTPSA id g18sm117975426pgm.9.2019.08.01.16.42.51 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:43:01 -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=SGET1+BaXv2xF+ZaaIzchQNPmiaNzqs+vIMzu3BZllk=; b=Dop9sJpGk0rej4dqIPkKgIeYWb5+cQsQ9cwnjy91yPZ5P8xuHDUQeIHLOrTxnIZs3P J7JapdHfhCl5v0BdOzVlqh5jIktZ+LSiXrnOLduNDelXb++bYY2fuBaj16fPnIS8HsSm p/aBimOih24v1pwqysZjzTjgWxKzBwbFhxcdd1qhmyWhUGQ7dIb9rkfz7oRpLm9fafDZ t8WwVGG+Yzzuaw0HiD+uY/1kTsfgIXVs6kasYEPv88iUm/aTHcaJUi2ZarZCM2VdlwBd YjWJiskUkK4JCjXawYkgVJzLKriKiZ3prjW0zysRd9QOXmEfw6dASvhIwdWulbgDiJsT N0Gw== 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=SGET1+BaXv2xF+ZaaIzchQNPmiaNzqs+vIMzu3BZllk=; b=L6m+FsBhih6NUiEtUEWJqpKZB7zOVjMtXNPP6WPTUJnnCQ+m22Lr+L75NnkzuAEuf6 A3PgTzqR+/z9RxYOKRPqRh1otM4s9PTARgiW3ldaD893fqkiR02FVwDoo1f9jDiKtWpv O2WtesbrnWfeiQnvGOceNp+d4JGibwfW5FN59nCvCTJckvjH5xk10tVxQDX3xb3R/01l 52Mn+Br+KrhzxZOCXG8DhESE13IJ1vyCrjlskPFhPC66FVLUDzV+b5D2oDHOiL+xDRgW v//R5DgtgpT7+6oXpdIjP1iQk+Ls0q6bDiSTtk1/mmog5R0MlP4XOWc1UIWEFLTg40s/ Ggyg== X-Gm-Message-State: APjAAAWUpnCM3hr98qt//yH7fRxNRF1FVorMhD8lSzkSe52mg8Pv3z/I DtmstvFu3ZTPb5xrJMJQgAmbiCA1q/+6kQ== X-Google-Smtp-Source: APXvYqxfPUnKHr7puIEXDDmluibt2ZKV+yxlgoiXaqu56BSvlkbkRLpdEyfes7hen9ChDBGaUAkL+w== X-Received: by 2002:a17:90a:fa07:: with SMTP id cm7mr1320581pjb.115.1564702981638; Thu, 01 Aug 2019 16:43:01 -0700 (PDT) From: Aarushi Mehta To: qemu-devel@nongnu.org Date: Fri, 2 Aug 2019 05:10:31 +0530 Message-Id: <20190801234031.29561-18-mehta.aaru20@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190801234031.29561-1-mehta.aaru20@gmail.com> References: <20190801234031.29561-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::442 Subject: [Qemu-devel] [PATCH v9 17/17] block/io_uring: enable kernel submission 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: Kevin Wolf , Maxim Levitsky , Sergio Lopez , qemu-block@nongnu.org, Markus Armbruster , Max Reitz , saket.sinha89@gmail.com, Stefan Hajnoczi , Paolo Bonzini , Fam Zheng , 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 --- 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 1553cd2e58..2a1d79704a 100644 --- a/block/io_uring.c +++ b/block/io_uring.c @@ -288,6 +288,17 @@ static int ioq_submit(LuringState *s) *sqes =3D luringcb->sqeq; QSIMPLEQ_REMOVE_HEAD(&s->io_q.submit_queue, next); } + /* + * io_uring_submit() returns sqes in ring for kernel side + * submission polling and sets wakeup flag if needed. + * + * It is not possible for any sqes to have already been + * submitted by the sq_poll as the writes are only made visible + * to the kernel in this function. + * + * For normal I/O, it returns the actual submitted requests + * from io_uring_enter() + */ ret =3D io_uring_submit(&s->ring); trace_luring_io_uring_submit(s, ret); /* Prevent infinite loop if submission is refused */ @@ -525,7 +536,11 @@ LuringState *luring_init(Error **errp) 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); + + rc =3D io_uring_queue_init(MAX_EVENTS, ring, IORING_SETUP_SQPOLL); + if (rc =3D=3D -EOPNOTSUPP) { + 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); --=20 2.21.0