[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LRH.2.02.1908090725290.31061@file01.intranet.prod.int.rdu2.redhat.com>
Date: Fri, 9 Aug 2019 07:30:00 -0400 (EDT)
From: Mikulas Patocka <mpatocka@...hat.com>
To: Dave Chinner <david@...morbit.com>
cc: Alexander Viro <viro@...iv.linux.org.uk>,
"Darrick J. Wong" <darrick.wong@...cle.com>,
Mike Snitzer <msnitzer@...hat.com>, junxiao.bi@...cle.com,
dm-devel@...hat.com, Alasdair Kergon <agk@...hat.com>,
honglei.wang@...cle.com, linux-kernel@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-xfs@...r.kernel.org
Subject: Re: [PATCH] direct-io: use GFP_NOIO to avoid deadlock
On Fri, 9 Aug 2019, Dave Chinner wrote:
> And, FWIW, there's an argument to be made here that the underlying
> bug is dm_bufio_shrink_scan() blocking kswapd by waiting on IO
> completions while holding a mutex that other IO-level reclaim
> contexts require to make progress.
>
> Cheers,
>
> Dave.
The IO-level reclaim contexts should use GFP_NOIO. If the dm-bufio
shrinker is called with GFP_NOIO, it cannot be blocked by kswapd, because:
* it uses trylock to acquire the mutex
* it doesn't attempt to free buffers that are dirty or under I/O (see
__try_evict_buffer)
I think that this logic is sufficient to prevent the deadlock.
Mikulas
Powered by blists - more mailing lists