[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5c883e3c-e96c-c6ba-7797-dc48de4698ca@huawei.com>
Date: Mon, 4 Mar 2024 20:15:04 +0800
From: Tong Tiangen <tongtiangen@...wei.com>
To: David Howells <dhowells@...hat.com>, Linus Torvalds
<torvalds@...ux-foundation.org>
CC: Al Viro <viro@...nel.org>, Jens Axboe <axboe@...nel.dk>, Christoph Hellwig
<hch@....de>, Christian Brauner <christian@...uner.io>, David Laight
<David.Laight@...lab.com>, Matthew Wilcox <willy@...radead.org>, Jeff Layton
<jlayton@...nel.org>, <linux-fsdevel@...r.kernel.org>,
<linux-block@...r.kernel.org>, <linux-mm@...ck.org>,
<netdev@...r.kernel.org>, <linux-kernel@...r.kernel.org>, Kefeng Wang
<wangkefeng.wang@...wei.com>
Subject: Re: [bug report] dead loop in generic_perform_write() //Re: [PATCH v7
07/12] iov_iter: Convert iterate*() to inline funcs
在 2024/3/4 19:56, David Howells 写道:
> Linus Torvalds <torvalds@...ux-foundation.org> wrote:
>
>> Actually, I think the right model is to get rid of that horrendous
>> .copy_mc field entirely.
>>
>> We only have one single place that uses it - that nasty core dumping
>> code. And that code is *not* performance critical.
>>
>> And not only isn't it performance-critical, it already does all the
>> core dumping one page at a time because it doesn't want to write pages
>> that were never mapped into user space.
>>
>> So what we can do is
>>
>> (a) make the core dumping code *copy* the page to a good location
>> with copy_mc_to_kernel() first
>>
>> (b) remove this horrendous .copy_mc crap entirely from iov_iter
>>
>> This is slightly complicated by the fact that copy_mc_to_kernel() may
>> not even exist, and architectures that don't have it don't want the
>> silly extra copy. So we need to abstract the "copy to temporary page"
>> code a bit. But that's probably a good thing anyway in that it forces
>> us to have nice interfaces.
>>
>> End result: something like the attached.
>>
>> AGAIN: THIS IS ENTIRELY UNTESTED.
>>
>> But hey, so was clearly all the .copy_mc code too that this removes, so...
>
> I like it:-)
>
> I've tested it by SIGQUIT'ing a number of processes and using gdb to examine
> the coredumps - which seems to work - at least without the production of any
> MCEs. I'm not sure how I could test it with MCEs.
I'm going to test the coredump with the MCE.
>
> Feel free to add:
>
> Reviewed-by: David Howells <dhowells@...hat.com>
> Tested-by: David Howells <dhowells@...hat.com>
>
> That said, I wonder if:
>
> #ifdef copy_mc_to_kernel
>
> should be:
>
> #ifdef CONFIG_ARCH_HAS_COPY_MC
>
> and whether it's possible to find out dynamically if MCEs can occur at all.
MCE can occur during the use of a page. So i think it occurs
dynamically.
Thanks,
Tong
>
> David
>
> .
Powered by blists - more mailing lists