Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1176372pxf; Fri, 12 Mar 2021 03:54:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJz8LrzY2dHseN3jvbjqdCTT2BnY0x8QPsMwV8AtSieClirmAmfZQiz/LwMEnzeExRSB4G7k X-Received: by 2002:a17:906:cecc:: with SMTP id si12mr8074332ejb.461.1615550078499; Fri, 12 Mar 2021 03:54:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615550078; cv=none; d=google.com; s=arc-20160816; b=0WdiC9C3z5X6eB1XtugElhIVpG43vNWXvNbRtnNkdQlay24yfAM4Uswb1JiRMURLG0 zbgJBS8dMi15TW9MguGrodMB2+sLvFkQt0eFexXhovk3bwp8McGCCmKUAgV5jysKEeV5 AdlOgWamJps1NMilWeQdZinwkXzJufagcKIQldHkaFONkKfam+u8PRLrnvtf8PAnTQc2 3UYbs5b1KBYtliLaWwSG2muxAP8gXtPUYmtxMDXbmgczIOnqMt87Q1i/XgUv3Vx2xSN5 c+jGgX3Ft9bnibb3ApQhF/cQRKZRvb3JCJBnGeskSP++rVJ3+X+In8ScOi4fJEf4/M1t qjZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:mail-followup-to:reply-to:message-id :subject:cc:to:from:date; bh=LNQY1r4ghXfOKJWctrFXXOlDXp1GM20YdVHIDi2CMyM=; b=0Bsscjy5ptyAOIri5TD6zF58yywfhWDNyoY2Xs0ARjZvxbGOdJ0Z2LFG1JMi+nAhhk COwfw4GPXJU5/bq+3sDpG33FfWewRTkBXxWGSCpQ6cy9CQCGLSFszQIzW3umSRq/wIL2 L3p2THHqFZ9aqVnfsppuICALht0JH5t9lM4gU/LqhvcbZ0X3A0t9Z+4FETmiK7VPFEKM 8KxfYWSl6tbsjHd4tfTPQBjhrQU4NPeZMYA4yrOckVcf3LVEG7kjN/6jZ0RexIrAVKtI L6mXhb8YVTr5xahXbMrcENPUBAQzq16xwWCctUYGTEel+c6GFdBShCBD6hZv5Tl5KcX6 KQ4A== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z7si3212491edc.356.2021.03.12.03.54.16; Fri, 12 Mar 2021 03:54:38 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232002AbhCLLZ2 (ORCPT + 99 others); Fri, 12 Mar 2021 06:25:28 -0500 Received: from mx2.suse.de ([195.135.220.15]:44122 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233730AbhCLLZ2 (ORCPT ); Fri, 12 Mar 2021 06:25:28 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 03CE7B03C; Fri, 12 Mar 2021 11:25:27 +0000 (UTC) Received: by ds.suse.cz (Postfix, from userid 10065) id 388D2DA81D; Fri, 12 Mar 2021 12:23:27 +0100 (CET) Date: Fri, 12 Mar 2021 12:23:27 +0100 From: David Sterba To: ira.weiny@intel.com Cc: Andrew Morton , David Sterba , Chris Mason , Josef Bacik , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/3] btrfs: Use memzero_page() instead of open coded kmap pattern Message-ID: <20210312112327.GP7604@suse.cz> Reply-To: dsterba@suse.cz Mail-Followup-To: dsterba@suse.cz, ira.weiny@intel.com, Andrew Morton , David Sterba , Chris Mason , Josef Bacik , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org References: <20210309212137.2610186-1-ira.weiny@intel.com> <20210309212137.2610186-4-ira.weiny@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210309212137.2610186-4-ira.weiny@intel.com> User-Agent: Mutt/1.5.23.1-rc1 (2014-03-12) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 09, 2021 at 01:21:37PM -0800, ira.weiny@intel.com wrote: > From: Ira Weiny > > There are many places where kmap/memset/kunmap patterns occur. > > Use the newly lifted memzero_page() to eliminate direct uses of kmap and > leverage the new core functions use of kmap_local_page(). > > The development of this patch was aided by the following coccinelle > script: > > // > // SPDX-License-Identifier: GPL-2.0-only > // Find kmap/memset/kunmap pattern and replace with memset*page calls > // > // NOTE: Offsets and other expressions may be more complex than what the script > // will automatically generate. Therefore a catchall rule is provided to find > // the pattern which then must be evaluated by hand. > // > // Confidence: Low > // Copyright: (C) 2021 Intel Corporation > // URL: http://coccinelle.lip6.fr/ > // Comments: > // Options: > > // > // Then the memset pattern > // > @ memset_rule1 @ > expression page, V, L, Off; > identifier ptr; > type VP; > @@ > > ( > -VP ptr = kmap(page); > | > -ptr = kmap(page); > | > -VP ptr = kmap_atomic(page); > | > -ptr = kmap_atomic(page); > ) > <+... > ( > -memset(ptr, 0, L); > +memzero_page(page, 0, L); > | > -memset(ptr + Off, 0, L); > +memzero_page(page, Off, L); > | > -memset(ptr, V, L); > +memset_page(page, V, 0, L); > | > -memset(ptr + Off, V, L); > +memset_page(page, V, Off, L); > ) > ...+> > ( > -kunmap(page); > | > -kunmap_atomic(ptr); > ) > > // Remove any pointers left unused > @ > depends on memset_rule1 > @ > identifier memset_rule1.ptr; > type VP, VP1; > @@ > > -VP ptr; > ... when != ptr; > ? VP1 ptr; > > // > // Catch all > // > @ memset_rule2 @ > expression page; > identifier ptr; > expression GenTo, GenSize, GenValue; > type VP; > @@ > > ( > -VP ptr = kmap(page); > | > -ptr = kmap(page); > | > -VP ptr = kmap_atomic(page); > | > -ptr = kmap_atomic(page); > ) > <+... > ( > // > // Some call sites have complex expressions within the memset/memcpy > // The follow are catch alls which need to be evaluated by hand. > // > -memset(GenTo, 0, GenSize); > +memzero_pageExtra(page, GenTo, GenSize); > | > -memset(GenTo, GenValue, GenSize); > +memset_pageExtra(page, GenValue, GenTo, GenSize); > ) > ...+> > ( > -kunmap(page); > | > -kunmap_atomic(ptr); > ) > > // Remove any pointers left unused > @ > depends on memset_rule2 > @ > identifier memset_rule2.ptr; > type VP, VP1; > @@ > > -VP ptr; > ... when != ptr; > ? VP1 ptr; > > // > > Signed-off-by: Ira Weiny Reviewed-by: David Sterba