From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52BCEC6FA89 for ; Tue, 13 Sep 2022 09:48:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C4FEC6B0072; Tue, 13 Sep 2022 05:48:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BFFA26B0073; Tue, 13 Sep 2022 05:48:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AC6FE8D0001; Tue, 13 Sep 2022 05:48:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 9A98D6B0072 for ; Tue, 13 Sep 2022 05:48:07 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 6B386805F6 for ; Tue, 13 Sep 2022 09:48:07 +0000 (UTC) X-FDA: 79906586214.29.CE46807 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf24.hostedemail.com (Postfix) with ESMTP id ECA2C1800C3 for ; Tue, 13 Sep 2022 09:48:05 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 2E793B80E3B for ; Tue, 13 Sep 2022 09:48:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE1BBC433C1 for ; Tue, 13 Sep 2022 09:48:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1663062482; bh=t9Ug2HOQaFdh84ntzqnnf0z5mQY39gS1prrI/LxqIbI=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=pibVL6mvkGejdf8QCNqdcGfcigsHnb2mlo/RdgrgTErqlzCoDrHaB0U71CCCg9lmy +sv6uL3IdOJ+645Dli99IwcisFub6QICbLEPFNbQDvsVf3KyICg8MDJjfmy6WwMVpg 3NWgzFdrTKHGB1xlY8CjisGCKx3zbYC6AMamDmBFAoA9WpcbH13hBTWSeSCxV1Opa4 o1CwdmcziTbL1IrPV62yXEYJ96hHr/Aogs6KoHNCnZcHee9LSQ7r0iXPph/xYYVnO9 wvN8HJOGpXqS6V3NOVDyReeUPvvc5wrEPmyARjhLsJY3NvJ3HGu4ugOlsB7+HpE1MB 0VT7Ve/O0Axcw== Received: by mail-oa1-f54.google.com with SMTP id 586e51a60fabf-1225219ee46so30624024fac.2 for ; Tue, 13 Sep 2022 02:48:02 -0700 (PDT) X-Gm-Message-State: ACgBeo08hS0YU+tXQiYyDJhjHxtKNiBpsX5PVGCSnPWg2RaY1vF9hOMB TZPD8Rm8D+XBuy3WyiDtuMHwXBk8NUA2iFntSCw= X-Google-Smtp-Source: AA6agR5QJ7hZE1Cv3VW23fOkvwZBERa+L/ufejRoj5HfwKEzVXNtGGRaFbNU2Kt1m6/VvEydkOrf/9rJMAQcjjuUtA0= X-Received: by 2002:a05:6870:538c:b0:11b:e64f:ee1b with SMTP id h12-20020a056870538c00b0011be64fee1bmr1305902oan.92.1663062482008; Tue, 13 Sep 2022 02:48:02 -0700 (PDT) MIME-Version: 1.0 References: <20220912192752.3785061-1-shr@fb.com> In-Reply-To: <20220912192752.3785061-1-shr@fb.com> From: Filipe Manana Date: Tue, 13 Sep 2022 10:47:25 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 00/12] io-uring/btrfs: support async buffered writes To: Stefan Roesch Cc: kernel-team@fb.com, io-uring@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-mm@kvack.org, axboe@kernel.dk, josef@toxicpanda.com Content-Type: text/plain; charset="UTF-8" ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pibVL6mv; spf=pass (imf24.hostedemail.com: domain of fdmanana@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=fdmanana@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1663062486; a=rsa-sha256; cv=none; b=gRTbAWtAh+dtC9dt6Yy7jFrVQbKtliuriRulp4hjHyOzyFVDR5RORjerE94H1UvSzGmHW2 tpxtq0BULlcDzIr69+yLOYdkRTuqTGrb4ihaFCG15gWauFaH9jdTh5G7jgsLtDTR0JaxnZ 8I4kRF2cx3ChNpJmsCVj0T35T8Q4zN4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1663062486; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=E9Wzkj3s7qgna5ae9M8VVjsQhTAqvZprCfZd70UxcOc=; b=lJqvrJ5i3toF14xD20UJkSno4hK67O4pwSptSCPXcwK8v/+o70iHxsRC8kGle2qiEV18XN MR3qnuMTjzuieFCQkse6rKqW6Zw9CwggBlMQtF7ODbK46M+fjovG9c9XbnOQXC+Mkg9UNQ BIhAtuVQOU7D9oFamxAkvtrrLFRENQA= Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pibVL6mv; spf=pass (imf24.hostedemail.com: domain of fdmanana@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=fdmanana@kernel.org; dmarc=pass (policy=none) header.from=kernel.org X-Rspamd-Server: rspam12 X-Stat-Signature: d5ekkdx4j5f53q7cdem13guc4jqmkkoa X-Rspamd-Queue-Id: ECA2C1800C3 X-Rspam-User: X-HE-Tag: 1663062485-866375 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Sep 12, 2022 at 8:28 PM Stefan Roesch wrote: > > This patch series adds support for async buffered writes when using both > btrfs and io-uring. Currently io-uring only supports buffered writes (for btrfs) > in the slow path, by processing them in the io workers. With this patch series > it is now possible to support buffered writes in the fast path. To be able to use > the fast path, the required pages must be in the page cache, the required locks > in btrfs can be granted immediately and no additional blocks need to be read > form disk. > > This patch series makes use of the changes that have been introduced by a > previous patch series: "io-uring/xfs: support async buffered writes" > > Performance results: > > The new patch improves throughput by over two times (compared to the exiting > behavior, where buffered writes are processed by an io-worker process) and also > the latency is considerably reduced. Detailled results are part of the changelog > of the first commit. Not in the first, but in the last commit instead. Looks fine to me now, thanks. Reviewed-by: Filipe Manana > > > BTRFS changes: > -Add option for NOWAIT IOCB's to tell that searches do not wait on locks. This > adds the nowait option to btrfs_path. > -For NOWAIT buffered writes on PREALLOC or NOCOW extents tell can_nocow_extent() > that we don't want to wait on any locks or metadata IO. > -Support no_flush reservations for nowait buffered writes. > -Add btrfs_try_lock_ordered_range() function. > -Add nowait flag to btrfs_check_nocow_lock() to use it in write code path. > -Add nowait parameter to prepare_pages() function. > -Plumb nowait through the write code path. > -Enable nowait buffered writes. > > > Testing: > This patch has been tested with xfstests, fsx, fio. xfstests shows no new > diffs compared to running without the patch series. > > > Changes: > > V3: > - Updated changelog of "btrfs: implement a nowait option for tree searches" > to say -EAGAIN. > - Use bool return value in signature of btrfs_try_lock_ordered_range > - Renamed variable tmp to can_nocow in btrfs_buffered_write > - Fixed coding style in get_prepare_fgp_flags > - Set pages[i] to NULL in error code path of lock_and_cleanup_extent_if_need() > - Added const in definition of "bool nowait" > - Removed unlikely from btrfs_buffered_write > - Rephrased changelog for "btrfs: add assert to search functions" and used > asserts instead of warnings > - Explained why enocded writes are not supported in the changelog > - Moved performance results to changelog of first commit > > V2: > - Replace EWOULDBLOCK with EAGAIN. In Version 1 it was not used consistently > - Export function balance_dirty_pages_ratelimited_flags() > - Add asserts/warnings for search functions when nowait is set, but we don't > expect that they are invoked with nowait set. > > > > Josef Bacik (5): > btrfs: implement a nowait option for tree searches > btrfs: make can_nocow_extent nowait compatible > btrfs: add the ability to use NO_FLUSH for data reservations > btrfs: add btrfs_try_lock_ordered_range > btrfs: make btrfs_check_nocow_lock nowait compatible > > Stefan Roesch (7): > mm: export balance_dirty_pages_ratelimited_flags() > btrfs: make prepare_pages nowait compatible > btrfs: make lock_and_cleanup_extent_if_need nowait compatible > btrfs: plumb NOWAIT through the write path > btrfs: make balance_dirty_pages nowait compatible > btrfs: assert nowait mode is not used for some btree search functions > btrfs: enable nowait async buffered writes > > fs/btrfs/block-group.c | 2 +- > fs/btrfs/ctree.c | 43 ++++++++++++- > fs/btrfs/ctree.h | 8 ++- > fs/btrfs/delalloc-space.c | 13 +++- > fs/btrfs/delalloc-space.h | 3 +- > fs/btrfs/extent-tree.c | 5 ++ > fs/btrfs/file-item.c | 4 +- > fs/btrfs/file.c | 124 ++++++++++++++++++++++++++++---------- > fs/btrfs/inode.c | 22 ++++--- > fs/btrfs/locking.c | 23 +++++++ > fs/btrfs/locking.h | 1 + > fs/btrfs/ordered-data.c | 28 +++++++++ > fs/btrfs/ordered-data.h | 1 + > fs/btrfs/relocation.c | 2 +- > fs/btrfs/scrub.c | 4 +- > fs/btrfs/space-info.c | 3 +- > fs/btrfs/tree-log.c | 6 +- > mm/page-writeback.c | 1 + > 18 files changed, 234 insertions(+), 59 deletions(-) > > > base-commit: 80e78fcce86de0288793a0ef0f6acf37656ee4cf > -- > 2.30.2 >