From: Vlastimil Babka <vbabka@suse.cz>
To: Dave Chinner <david@fromorbit.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Christoph Hellwig <hch@infradead.org>,
linux-xfs@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
Will Deacon <will@kernel.org>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
penguin-kernel@I-love.SAKURA.ne.jp
Subject: Re: [PATCH 2/3] xfs: add kmem_alloc_io()
Date: Thu, 22 Aug 2019 14:19:04 +0200 [thread overview]
Message-ID: <ad8037c8-d1af-fb4f-1226-af585df492d3@suse.cz> (raw)
In-Reply-To: <20190822120725.GA1119@dread.disaster.area>
On 8/22/19 2:07 PM, Dave Chinner wrote:
> On Thu, Aug 22, 2019 at 01:14:30PM +0200, Vlastimil Babka wrote:
>
> No, the problem is this (using kmalloc as a general term for
> allocation, whether it be kmalloc, kmem_cache_alloc, alloc_page, etc)
>
> some random kernel code
> kmalloc(GFP_KERNEL)
> reclaim
> PF_MEMALLOC
> shrink_slab
> xfs_inode_shrink
> XFS_ILOCK
> xfs_buf_allocate_memory()
> kmalloc(GFP_KERNEL)
>
> And so locks on inodes in reclaim are seen below reclaim. Then
> somewhere else we have:
>
> some high level read-only xfs code like readdir
> XFS_ILOCK
> xfs_buf_allocate_memory()
> kmalloc(GFP_KERNEL)
> reclaim
>
> And this one throws false positive lockdep warnings because we
> called into reclaim with XFS_ILOCK held and GFP_KERNEL alloc
OK, and what exactly makes this positive a false one? Why can't it continue like
the first example where reclaim leads to another XFS_ILOCK, thus deadlock?
> context. So the only solution we had at the tiem to shut it up was:
>
> some high level read-only xfs code like readdir
> XFS_ILOCK
> xfs_buf_allocate_memory()
> kmalloc(GFP_NOFS)
>
> So that lockdep sees it's not going to recurse into reclaim and
> doesn't throw a warning...
AFAICS that GFP_NOFS would fix not only a warning but also a real deadlock
(depending on the answer to my previous question).
> Cheers,
>
> Dave.
>
next prev parent reply other threads:[~2019-08-22 12:19 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20190821083820.11725-1-david@fromorbit.com>
[not found] ` <20190821083820.11725-3-david@fromorbit.com>
[not found] ` <20190821232440.GB24904@infradead.org>
[not found] ` <20190822003131.GR1119@dread.disaster.area>
2019-08-22 7:59 ` Christoph Hellwig
2019-08-22 8:51 ` Peter Zijlstra
2019-08-22 9:10 ` Peter Zijlstra
2019-08-22 10:14 ` Dave Chinner
2019-08-22 11:14 ` Vlastimil Babka
2019-08-22 12:07 ` Dave Chinner
2019-08-22 12:19 ` Vlastimil Babka [this message]
2019-08-22 13:17 ` Dave Chinner
2019-08-22 14:26 ` Vlastimil Babka
2019-08-26 12:21 ` Michal Hocko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ad8037c8-d1af-fb4f-1226-af585df492d3@suse.cz \
--to=vbabka@suse.cz \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=peterz@infradead.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox