Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2481726imm; Mon, 28 May 2018 08:55:47 -0700 (PDT) X-Google-Smtp-Source: AB8JxZp+4staV6GRlev03u89ddquA5S/vR8xju2NyqxcCNY0Op+1uD92J4iTg/VPX45B1fj4Z5zN X-Received: by 2002:aa7:8609:: with SMTP id p9-v6mr13857137pfn.123.1527522947536; Mon, 28 May 2018 08:55:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527522947; cv=none; d=google.com; s=arc-20160816; b=jRpMpLPXW5qGIqbLdcqPQ78mbuKB6NO+VXkzbd88/+Ahr2PHdjdGWXwYJt8oE1qt/0 bgOVit7jCyIj5MY1Oq811sHc7ZTyNkPVkExNicnHyNjMa7jJw+ZAK3pnRpswrUlJKQnz uCbKegrL9EeFx8o7tDs79YgY3pnkMXdnk/pcDPUimxcztbpn3sAy4AiJuT5ODJZcLa8a idRetu8n+eCwHo3+MhXdSmuuYwgLxSLx4U/kDUkIqv/dcsmITirWaHvQQGnsklYTiU9s L2phj3HBnSzGTti0fLMw28VjwHBa54/ZNqlX+FLrf3zp+SzD2RdgqeXI1lvaUyGpYAgQ x1yA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=p1aH8ZatdS6seNCEx8jw7kCykSqILgIkCjV64lQl7uQ=; b=KRR9KJbdaq4/J1GhUF+HjCS3LHBoKxHPk79Cd9caPaFRyDZ6eelmGhtE1LRdkyJaa8 rKn1BKxiKuyreDRtkXwGhOFLEmG7tMEp9veKYS0X7R2jLtTMoocD0p/ZDo6C3zzRivR3 5zhiFDTP27xWW19PF33PblCPA0X6GYFRUuh7lAJA34DXbPjwKDdFySVLndAlM/MMoIHb 9TEWrly14qrK0w0mrttroIsH5+6Ciu6LC2IQRUzDUyA+J3EZ8RllMAEc/LbVVLLTgEvs H0aD6ixcahN0b0AqAcKAk5UvE7+jJAPXUrofDJQdxoIB0HM7tN/fEYOTfgmciQvaapWz jDTw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m21-v6si6470603pls.217.2018.05.28.08.55.32; Mon, 28 May 2018 08:55:47 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S969277AbeE1Pya (ORCPT + 99 others); Mon, 28 May 2018 11:54:30 -0400 Received: from mx2.suse.de ([195.135.220.15]:43737 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1425265AbeE1PyQ (ORCPT ); Mon, 28 May 2018 11:54:16 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext-too.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id EF6D3AE7C; Mon, 28 May 2018 15:54:13 +0000 (UTC) Date: Mon, 28 May 2018 11:21:38 +0200 From: Michal Hocko To: Mike Rapoport Cc: Dave Chinner , Jonathan Corbet , LKML , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, "Darrick J. Wong" , David Sterba Subject: Re: [PATCH] doc: document scope NOFS, NOIO APIs Message-ID: <20180528092138.GI1517@dhcp22.suse.cz> References: <20180424183536.GF30619@thunk.org> <20180524114341.1101-1-mhocko@kernel.org> <20180524221715.GY10363@dastard> <20180525081624.GH11881@dhcp22.suse.cz> <20180527124721.GA4522@rapoport-lnx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180527124721.GA4522@rapoport-lnx> User-Agent: Mutt/1.9.5 (2018-04-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun 27-05-18 15:47:22, Mike Rapoport wrote: > On Fri, May 25, 2018 at 10:16:24AM +0200, Michal Hocko wrote: > > On Fri 25-05-18 08:17:15, Dave Chinner wrote: > > > On Thu, May 24, 2018 at 01:43:41PM +0200, Michal Hocko wrote: > > [...] > > > > +FS/IO code then simply calls the appropriate save function right at the > > > > +layer where a lock taken from the reclaim context (e.g. shrinker) and > > > > +the corresponding restore function when the lock is released. All that > > > > +ideally along with an explanation what is the reclaim context for easier > > > > +maintenance. > > > > > > This paragraph doesn't make much sense to me. I think you're trying > > > to say that we should call the appropriate save function "before > > > locks are taken that a reclaim context (e.g a shrinker) might > > > require access to." > > > > > > I think it's also worth making a note about recursive/nested > > > save/restore stacking, because it's not clear from this description > > > that this is allowed and will work as long as inner save/restore > > > calls are fully nested inside outer save/restore contexts. > > > > Any better? > > > > -FS/IO code then simply calls the appropriate save function right at the > > -layer where a lock taken from the reclaim context (e.g. shrinker) and > > -the corresponding restore function when the lock is released. All that > > -ideally along with an explanation what is the reclaim context for easier > > -maintenance. > > +FS/IO code then simply calls the appropriate save function before any > > +lock shared with the reclaim context is taken. The corresponding > > +restore function when the lock is released. All that ideally along with > > Maybe: "The corresponding restore function is called when the lock is > released" This will get rewritten some more based on comments from Dave > > +an explanation what is the reclaim context for easier maintenance. > > + > > +Please note that the proper pairing of save/restore function allows nesting > > +so memalloc_noio_save is safe to be called from an existing NOIO or NOFS scope. > > so it is safe to call memalloc_noio_save from an existing NOIO or NOFS > scope Here is what I have right now on top diff --git a/Documentation/core-api/gfp_mask-from-fs-io.rst b/Documentation/core-api/gfp_mask-from-fs-io.rst index c0ec212d6773..0cff411693ab 100644 --- a/Documentation/core-api/gfp_mask-from-fs-io.rst +++ b/Documentation/core-api/gfp_mask-from-fs-io.rst @@ -34,12 +34,15 @@ scope will inherently drop __GFP_FS respectively __GFP_IO from the given mask so no memory allocation can recurse back in the FS/IO. FS/IO code then simply calls the appropriate save function before any -lock shared with the reclaim context is taken. The corresponding -restore function when the lock is released. All that ideally along with -an explanation what is the reclaim context for easier maintenance. - -Please note that the proper pairing of save/restore function allows nesting -so memalloc_noio_save is safe to be called from an existing NOIO or NOFS scope. +critical section wrt. the reclaim is started - e.g. lock shared with the +reclaim context or when a transaction context nesting would be possible +via reclaim. The corresponding restore function when the critical +section ends. All that ideally along with an explanation what is +the reclaim context for easier maintenance. + +Please note that the proper pairing of save/restore function allows +nesting so it is safe to call ``memalloc_noio_save`` respectively +``memalloc_noio_restore`` from an existing NOIO or NOFS scope. What about __vmalloc(GFP_NOFS) ============================== -- Michal Hocko SUSE Labs