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 X-Spam-Level: X-Spam-Status: No, score=-5.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BBC3CC433B4 for ; Fri, 30 Apr 2021 16:50:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9B38D613D9 for ; Fri, 30 Apr 2021 16:50:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230106AbhD3Qvh (ORCPT ); Fri, 30 Apr 2021 12:51:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229818AbhD3Qvg (ORCPT ); Fri, 30 Apr 2021 12:51:36 -0400 Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1D1EAC06174A for ; Fri, 30 Apr 2021 09:50:48 -0700 (PDT) Received: by mail-lf1-x131.google.com with SMTP id j10so17935755lfb.12 for ; Fri, 30 Apr 2021 09:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2mgGOD6DsCL1nEPbpxya30H86CQfb4AoFjQ0GL0EjuI=; b=Y5xPODzFA24qqFAWkpQEJN4NcIBUMU8RFQhSRbg/S7UJyEDBsTUIcC1t4vkqXJo82M NResZ6y5IN9593zNpRWllf0geGDAMsM3Lv0SHyZ8bAguSxaYCLaKmtVKxvJUOI4Ck99H dmKsNcwFDBOdcf7tiJ53ucsnmMuUC4eyfQ6sM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2mgGOD6DsCL1nEPbpxya30H86CQfb4AoFjQ0GL0EjuI=; b=e/ZC1ryvwzxdcMtTPomjTkRMvLgfmgujB+697PYhaadwA8nfM0K0QOu+KEKnBLKMUi YhPN3rNPVcDc0YvBMWBYw/cbvgz0SssOqUX8OEKyHzi4qzUvtn4dDvk5VJKAdOJqM0jG KI+JI7XKNz9GflqDTM4zad9NLmCvaXGpydJ+VB6dfZcpsNQgvUn4iQmIoQXAzMmqK3CT loLFdaCQ32WxrzhVprf3Fkms8pkzSajqLYPyCsHqWqYX/41zkfTD5zTReXOrE+wiipGG 2K68kBaHRN/tjJ2svCBnGYzWssipLbSkAl2NSxd80fFz314GdfwKlVq+N2QkjEQlUjLW cdRg== X-Gm-Message-State: AOAM533twwOU1UQQNpX2q5/Kjm6gWvh+D/0tdhLY2pS42CUoIwx0cTtc yRAuAigsJlY9a9PXSkAfICEIBFpdcSqRR3H8 X-Google-Smtp-Source: ABdhPJwfDY34IYO8t+pES8x7SAOLWuELKAIflDfqL0HVOyFeY6FzFbNjVW9G/WZxVCjkggWOUlTgpA== X-Received: by 2002:ac2:5fc6:: with SMTP id q6mr3760112lfg.205.1619801446402; Fri, 30 Apr 2021 09:50:46 -0700 (PDT) Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com. [209.85.208.177]) by smtp.gmail.com with ESMTPSA id k20sm331478lfg.54.2021.04.30.09.50.45 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 30 Apr 2021 09:50:45 -0700 (PDT) Received: by mail-lj1-f177.google.com with SMTP id z23so35090689lji.4 for ; Fri, 30 Apr 2021 09:50:45 -0700 (PDT) X-Received: by 2002:a2e:b4a2:: with SMTP id q2mr4280811ljm.61.1619801445412; Fri, 30 Apr 2021 09:50:45 -0700 (PDT) MIME-Version: 1.0 References: <20210429225251.02b6386d21b69255b4f6c163@linux-foundation.org> <20210430055518.KCtlWixJr%akpm@linux-foundation.org> In-Reply-To: <20210430055518.KCtlWixJr%akpm@linux-foundation.org> From: Linus Torvalds Date: Fri, 30 Apr 2021 09:50:29 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [patch 041/178] mm: provide filemap_range_needs_writeback() helper To: Andrew Morton Cc: Jens Axboe , Jan Kara , Linux-MM , mm-commits@vger.kernel.org, Matthew Wilcox Content-Type: text/plain; charset="UTF-8" Precedence: bulk Reply-To: linux-kernel@vger.kernel.org List-ID: X-Mailing-List: mm-commits@vger.kernel.org Wait, what? On Thu, Apr 29, 2021 at 10:55 PM Andrew Morton wrote: > > + if (!mapping_needs_writeback(mapping)) > + return false; > + if (!mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) && > + !mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) > + return false; > + if (end_byte < start_byte) > + return false; Ok, good, get rid of the trivial cases first. > + rcu_read_lock(); > + xas_for_each(&xas, page, max) { > + if (xas_retry(&xas, page)) > + continue; > + if (xa_is_value(page)) > + continue; > + if (PageDirty(page) || PageLocked(page) || PageWriteback(page)) > + break; > + } > + rcu_read_unlock(); Whee. This looks very very expensive indeed. Why is is going to each page, why does it care about locked when the simple early cases did not? Why isn't this just using xas_for_each_marked(), or maybe even just a single "xa_find()", since all it cares about is "is _any_ page.." Maybe I'm missing something, but this really does look potentially horrendously slow. Jens/Willy? Linus 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 X-Spam-Level: X-Spam-Status: No, score=-5.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9A9AC433ED for ; Fri, 30 Apr 2021 16:50:49 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5ADDB61459 for ; Fri, 30 Apr 2021 16:50:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5ADDB61459 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id E68826B006E; Fri, 30 Apr 2021 12:50:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E3D8C6B0070; Fri, 30 Apr 2021 12:50:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CDE956B0071; Fri, 30 Apr 2021 12:50:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0110.hostedemail.com [216.40.44.110]) by kanga.kvack.org (Postfix) with ESMTP id B55E36B006E for ; Fri, 30 Apr 2021 12:50:48 -0400 (EDT) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 7D3DF180ACF1F for ; Fri, 30 Apr 2021 16:50:48 +0000 (UTC) X-FDA: 78089622576.02.75AB5E5 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) by imf12.hostedemail.com (Postfix) with ESMTP id 4F23A13A for ; Fri, 30 Apr 2021 16:50:36 +0000 (UTC) Received: by mail-lf1-f49.google.com with SMTP id x2so5146909lff.10 for ; Fri, 30 Apr 2021 09:50:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2mgGOD6DsCL1nEPbpxya30H86CQfb4AoFjQ0GL0EjuI=; b=Y5xPODzFA24qqFAWkpQEJN4NcIBUMU8RFQhSRbg/S7UJyEDBsTUIcC1t4vkqXJo82M NResZ6y5IN9593zNpRWllf0geGDAMsM3Lv0SHyZ8bAguSxaYCLaKmtVKxvJUOI4Ck99H dmKsNcwFDBOdcf7tiJ53ucsnmMuUC4eyfQ6sM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2mgGOD6DsCL1nEPbpxya30H86CQfb4AoFjQ0GL0EjuI=; b=Gh/IgZo7R6bawC14PclYLfLEo1r2jxbcz0VTJbqlvs5HWjdebBq+yQLii/kBWImPHs uQVPi+DrlDNR8T0HRbAs8KCDp5/1bT1CfAX4e02Dz3mwhTVyAPZNJhbXQGPYi9sHW9Ec ZgQgX7B2vRXifZHqylVGOK7GUl9YmKv3y4YfS3BRJSnvW2cAdiY2A02wcDieATMT/h3+ 4mip9E9w/WKpOvuonGWOGEpZTYhv1xz0dIrsxlTOaaTkJGLqXUlQax/kRL58RU8RWFim GWmSI8vViIZIoRrxbd/P0hjN55J1PXv2eEQ+19mlIh1jJ9t3Ip2omykst/KwAWlkfhlR T51A== X-Gm-Message-State: AOAM533DRZt8URbVqimqhU5lCJz3ntsXswxpvWMpyR7TUryZZ1alVMy2 k3P/G68wC/7C5qa8rVKIHrFz9xvh//dF1YCu X-Google-Smtp-Source: ABdhPJwoHpriUOSLsxFejXStYIWdvRpszamwaVLliAmxGpDg6WhTP5OVNQLwHRkl9o1n8WKkLKWTRw== X-Received: by 2002:a05:6512:1283:: with SMTP id u3mr3960744lfs.318.1619801446295; Fri, 30 Apr 2021 09:50:46 -0700 (PDT) Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com. [209.85.208.172]) by smtp.gmail.com with ESMTPSA id a25sm291457ljn.28.2021.04.30.09.50.45 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 30 Apr 2021 09:50:45 -0700 (PDT) Received: by mail-lj1-f172.google.com with SMTP id u20so81588543lja.13 for ; Fri, 30 Apr 2021 09:50:45 -0700 (PDT) X-Received: by 2002:a2e:b4a2:: with SMTP id q2mr4280811ljm.61.1619801445412; Fri, 30 Apr 2021 09:50:45 -0700 (PDT) MIME-Version: 1.0 References: <20210429225251.02b6386d21b69255b4f6c163@linux-foundation.org> <20210430055518.KCtlWixJr%akpm@linux-foundation.org> In-Reply-To: <20210430055518.KCtlWixJr%akpm@linux-foundation.org> From: Linus Torvalds Date: Fri, 30 Apr 2021 09:50:29 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [patch 041/178] mm: provide filemap_range_needs_writeback() helper To: Andrew Morton Cc: Jens Axboe , Jan Kara , Linux-MM , mm-commits@vger.kernel.org, Matthew Wilcox Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: afd4bdahkohkm5uaffhu96zzn3zodzqy X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 4F23A13A Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=Y5xPODzF; spf=pass (imf12.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.167.49 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none Received-SPF: none (linuxfoundation.org>: No applicable sender policy available) receiver=imf12; identity=mailfrom; envelope-from=""; helo=mail-lf1-f49.google.com; client-ip=209.85.167.49 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1619801436-390622 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: Wait, what? On Thu, Apr 29, 2021 at 10:55 PM Andrew Morton wrote: > > + if (!mapping_needs_writeback(mapping)) > + return false; > + if (!mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) && > + !mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) > + return false; > + if (end_byte < start_byte) > + return false; Ok, good, get rid of the trivial cases first. > + rcu_read_lock(); > + xas_for_each(&xas, page, max) { > + if (xas_retry(&xas, page)) > + continue; > + if (xa_is_value(page)) > + continue; > + if (PageDirty(page) || PageLocked(page) || PageWriteback(page)) > + break; > + } > + rcu_read_unlock(); Whee. This looks very very expensive indeed. Why is is going to each page, why does it care about locked when the simple early cases did not? Why isn't this just using xas_for_each_marked(), or maybe even just a single "xa_find()", since all it cares about is "is _any_ page.." Maybe I'm missing something, but this really does look potentially horrendously slow. Jens/Willy? Linus