[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160811173651.GA31803@redhat.com>
Date: Thu, 11 Aug 2016 19:36:52 +0200
From: Oleg Nesterov <oleg@...hat.com>
To: Bart Van Assche <bart.vanassche@...disk.com>
Cc: Peter Zijlstra <peterz@...radead.org>,
"mingo@...nel.org" <mingo@...nel.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Johannes Weiner <hannes@...xchg.org>,
Neil Brown <neilb@...e.de>,
Michael Shaver <jmshaver@...il.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] sched: Avoid that __wait_on_bit_lock() hangs
Hi Bart,
On 08/10, Bart Van Assche wrote:
>
> That's an excellent catch. With your previous patch and this patch applied I
> can't reproduce the hang in truncate_inode_pages_range() anymore.
Great, thanks.
I'll send another debugging patch tomorrow, I was a bit busy today. The next
step is obvious, we need to know the caller.
But just in case, this doesn't necessarily mean that the usage of
__ClearPageLocked() is actually buggy, we don't really know this so far...
And I can't understand another oddity. Your test-case hangs in kill_bdev()
path which sleeps with bdev->bd_openers == 0 under bdev->bd_mutex so it can't
be re-opened. However, since your change in abort_exclusive_wait() helped,
there should be the readers sleeping in lock_killable() and thus bd_openers
can't be zero.
Nevermind, I don't understand this code even remotely, we will see later
who should be asked.
> I still
> see some other wait_on_page_bit() hangs after an I/O error has occurred.
> However, the hangs that I still see are related to waiting on buffer head
> state changes and not on the PG_locked page flag.
I don't know if this is right or not... lets discuss this later.
Thanks!
Oleg.
Powered by blists - more mailing lists