Received: by 10.223.176.5 with SMTP id f5csp1260535wra; Sat, 27 Jan 2018 20:28:15 -0800 (PST) X-Google-Smtp-Source: AH8x226rL+zZT6JoccgqWtwcSIKiUWu5A8+hE9isYVjW7wjD3ltCxWyR7FpG3wjDUn7fNi6N46nY X-Received: by 10.99.157.72 with SMTP id i69mr17937784pgd.300.1517113695498; Sat, 27 Jan 2018 20:28:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517113695; cv=none; d=google.com; s=arc-20160816; b=Vx7Vix37M3r4X2J41DIt+1ij2/XQIgEK5RWEcBR85zd8ZtFgcJsleS1GIIER0xcNK4 OYPdlJHPsjIU97764W+ADlKeyjtynE1xe65A0BIUGoaYul7SD9XA9qygvJaD/jlQyH/v mlGo3fY8nxa3Ab+nIOkdHe5lArQYvvcVsUxHn0xnLqCjD/57jn0MRv2rm6FpqLRIYo3r sDwixj655pmgbzvCIomVHWoaIK3NdMqAuCfTuspV6y9jjuu+ihQvy/urPgtYoRHZ/3BS VhdL7iuKzGG/iAA5sKQCR5b55xVfy36rtX3EXJTr4Ra+C2Y75Cg5fDWLV5pkAyS8PfEP AqMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:from:subject:arc-authentication-results; bh=Elb8rudgKMQnf7RTwSlPayahBjJBDSi8SlbeFVb3xiA=; b=EhWC2gFzQnlkPL+YNWaz4IHFtuYkYcArA8hUpBTT4ZKxOawaADHVB73PiMwzLyI3nn UXnjcTSBop8rWOFLTBo4K6EZraL/7DHE1IVhTxNE0MO/cwD42qMw/5l39JOvwSxqEBBb Vzxu0XDvuiwefd3xC9FgvOPqiqsDAR1scCc7Etw3d5q0/w0F53HW+0Mm72JyEw179bRW Lo0WrVKqGeuxX9Orxn9iWoUmZmVw8XR3zttaWtLgoCz7CokTUMEgl9Ya/Jp8xyEa/qa6 k4k6N8BS1KrnvI04XH1p2g0pq1Dr4Cr0L4I+EX4SM8+Z+2p0b9GMHa6tD41PFmx8CNT+ EnZg== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b2-v6si1533638plk.478.2018.01.27.20.27.28; Sat, 27 Jan 2018 20:28:15 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753001AbeA1E00 (ORCPT + 99 others); Sat, 27 Jan 2018 23:26:26 -0500 Received: from www262.sakura.ne.jp ([202.181.97.72]:12644 "EHLO www262.sakura.ne.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751712AbeA1E0Z (ORCPT ); Sat, 27 Jan 2018 23:26:25 -0500 Received: from fsav101.sakura.ne.jp (fsav101.sakura.ne.jp [27.133.134.228]) by www262.sakura.ne.jp (8.14.5/8.14.5) with ESMTP id w0S4PY1H080481; Sun, 28 Jan 2018 13:25:34 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav101.sakura.ne.jp (F-Secure/fsigk_smtp/530/fsav101.sakura.ne.jp); Sun, 28 Jan 2018 13:25:34 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/530/fsav101.sakura.ne.jp) Received: from [192.168.1.8] (softbank126074156036.bbtec.net [126.74.156.36]) (authenticated bits=0) by www262.sakura.ne.jp (8.14.5/8.14.5) with ESMTP id w0S4PTpn080469 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 28 Jan 2018 13:25:34 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Subject: Re: [4.15-rc9] fs_reclaim lockdep trace From: Tetsuo Handa To: Linus Torvalds , Dave Jones , Peter Zijlstra Cc: Linux Kernel , linux-mm , Network Development References: <20180124013651.GA1718@codemonkey.org.uk> <20180127222433.GA24097@codemonkey.org.uk> Message-ID: <7771dd55-2655-d3a9-80ee-24c9ada7dbbe@I-love.SAKURA.ne.jp> Date: Sun, 28 Jan 2018 13:25:29 +0900 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2018/01/28 10:16, Tetsuo Handa wrote: > Linus Torvalds wrote: >> On Sat, Jan 27, 2018 at 2:24 PM, Dave Jones wrote: >>> On Tue, Jan 23, 2018 at 08:36:51PM -0500, Dave Jones wrote: >>> > Just triggered this on a server I was rsync'ing to. >>> >>> Actually, I can trigger this really easily, even with an rsync from one >>> disk to another. Though that also smells a little like networking in >>> the traces. Maybe netdev has ideas. >> >> Is this new to 4.15? Or is it just that you're testing something new? >> >> If it's new and easy to repro, can you just bisect it? And if it isn't >> new, can you perhaps check whether it's new to 4.14 (ie 4.13 being >> ok)? >> >> Because that fs_reclaim_acquire/release() debugging isn't new to 4.15, >> but it was rewritten for 4.14.. I'm wondering if that remodeling ended >> up triggering something. > > --- linux-4.13.16/mm/page_alloc.c > +++ linux-4.14.15/mm/page_alloc.c Oops. This output was inverted. > @@ -3527,53 +3519,12 @@ > return true; > } > return false; > } > #endif /* CONFIG_COMPACTION */ > > -#ifdef CONFIG_LOCKDEP > -struct lockdep_map __fs_reclaim_map = > - STATIC_LOCKDEP_MAP_INIT("fs_reclaim", &__fs_reclaim_map); > - > -static bool __need_fs_reclaim(gfp_t gfp_mask) > -{ > - gfp_mask = current_gfp_context(gfp_mask); > - > - /* no reclaim without waiting on it */ > - if (!(gfp_mask & __GFP_DIRECT_RECLAIM)) > - return false; > - > - /* this guy won't enter reclaim */ > - if ((current->flags & PF_MEMALLOC) && !(gfp_mask & __GFP_NOMEMALLOC)) > - return false; Since __kmalloc_reserve() from __alloc_skb() adds __GFP_NOMEMALLOC | __GFP_NOWARN to gfp_mask, __need_fs_reclaim() is failing to return false here. But why checking __GFP_NOMEMALLOC here? __alloc_pages_slowpath() skips direct reclaim if !(gfp_mask & __GFP_DIRECT_RECLAIM) or (current->flags & PF_MEMALLOC), doesn't it? ---------- static inline struct page * __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, struct alloc_context *ac) { (...snipped...) /* Caller is not willing to reclaim, we can't balance anything */ if (!can_direct_reclaim) goto nopage; /* Avoid recursion of direct reclaim */ if (current->flags & PF_MEMALLOC) goto nopage; /* Try direct reclaim and then allocating */ page = __alloc_pages_direct_reclaim(gfp_mask, order, alloc_flags, ac, &did_some_progress); if (page) goto got_pg; (...snipped...) } ----------