Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1544399pxb; Thu, 16 Sep 2021 09:36:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz89MWVkJ9C2O+osgMxwMx4rhGJeDY130CZ5JUILi0U1i4mmvhNCoAcNmPABps3MhcP/KSW X-Received: by 2002:a5d:8b17:: with SMTP id k23mr5143063ion.17.1631810208234; Thu, 16 Sep 2021 09:36:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631810208; cv=none; d=google.com; s=arc-20160816; b=NyOR1xr2JrWmLEmxF3BgJOyBhBzPEY2O50hKiOsnSNb0Y8IfKJ1Mr6a7B8MWNoWZyk n4zPdq1NW2g3bUcvqq/XxbJpH2ZJMmwrpstYt3FUaQ8AvJcEss6R9mczJ/vOgQ/E4s4H wIwjn5itW2oKSES08SETlFxpqSxrhTlcrM4Me5R6zu0ADijdXmTxFaheK3cDS68ylVJ3 OBitU8xxORm3oOL0RFJyd8KS2KtVcaFJcqDzQKHUtmA5cBGSW9N4kNA/eBCkZy8IFH2C FBx564zYciZqyatf6TtJgQ6B0toAUsJUYMWitAxr3/0kPAZMJ6p11ni2CAejcWzlUDhn 2zEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=HLXn1PfgsjJ1/m4PiiHIybfHfFu+rkluktc0uQlLZFw=; b=nFq5fY3fc1MB3OxdEogv1pcaf6YG0qihMB1mDpvoUVguaTYXBeQF5fgfm+p4lUaf+U R01Zazj7dzQgeR2s9Cq1Y7djx6ztZUNfzupJCZqC/w34kv9YARXbGVI2Xg3r4F6V55kU dddrNkWC5uJDRWDvBpsKBdlIIxRoMfQ/LzUsMqM8++bpzVhCRRMkafJfju0f2LWIQeNM 6nxNdj8egq2C//DXXPidivzzHnn1DHdG4lxCyDUBP/uBwy3bWI2Raquiy5W18En0Ln9f WTxvePO44/bicgSUllCC0lOAnIhWeg3473cpRIZzQKwSvDJyV1vzUyVhyrd5/CJp0Qm9 a2qQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YfhbJf+P; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w7si3217112jad.86.2021.09.16.09.36.25; Thu, 16 Sep 2021 09:36:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YfhbJf+P; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244208AbhIPQfA (ORCPT + 99 others); Thu, 16 Sep 2021 12:35:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:37484 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241257AbhIPQ1H (ORCPT ); Thu, 16 Sep 2021 12:27:07 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id E89126159A; Thu, 16 Sep 2021 16:17:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631809042; bh=86PE/a9TFm7ZEbARjogtSHzEyNP9FhLi7eyc6ct1KdI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YfhbJf+PfHfF958rat2WCPWTuMFAj+IthsKZd0XhzxaEmwpTFI6PWkRL/boqf/sxo +eG9Rx8pyzq8AGkn8dJxzeeg8cvdQjZUjTAiUcUrx58K4YjjG1xSP7mh47+0XNy9IA vg6hgycQ034kHuAtlEzZhG2v6bylY+lfkS6CZ7cg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nikolay Borisov , Josef Bacik , David Sterba Subject: [PATCH 5.13 002/380] btrfs: wake up async_delalloc_pages waiters after submit Date: Thu, 16 Sep 2021 17:55:59 +0200 Message-Id: <20210916155804.056573565@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916155803.966362085@linuxfoundation.org> References: <20210916155803.966362085@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Josef Bacik commit ac98141d140444fe93e26471d3074c603b70e2ca upstream. We use the async_delalloc_pages mechanism to make sure that we've completed our async work before trying to continue our delalloc flushing. The reason for this is we need to see any ordered extents that were created by our delalloc flushing. However we're waking up before we do the submit work, which is before we create the ordered extents. This is a pretty wide race window where we could potentially think there are no ordered extents and thus exit shrink_delalloc prematurely. Fix this by waking us up after we've done the work to create ordered extents. CC: stable@vger.kernel.org # 5.4+ Reviewed-by: Nikolay Borisov Signed-off-by: Josef Bacik Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/inode.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -1248,11 +1248,6 @@ static noinline void async_cow_submit(st nr_pages = (async_chunk->end - async_chunk->start + PAGE_SIZE) >> PAGE_SHIFT; - /* atomic_sub_return implies a barrier */ - if (atomic_sub_return(nr_pages, &fs_info->async_delalloc_pages) < - 5 * SZ_1M) - cond_wake_up_nomb(&fs_info->async_submit_wait); - /* * ->inode could be NULL if async_chunk_start has failed to compress, * in which case we don't have anything to submit, yet we need to @@ -1261,6 +1256,11 @@ static noinline void async_cow_submit(st */ if (async_chunk->inode) submit_compressed_extents(async_chunk); + + /* atomic_sub_return implies a barrier */ + if (atomic_sub_return(nr_pages, &fs_info->async_delalloc_pages) < + 5 * SZ_1M) + cond_wake_up_nomb(&fs_info->async_submit_wait); } static noinline void async_cow_free(struct btrfs_work *work)