On 19.04.20 07:14, Gao Xiang wrote:
On Sat, Apr 18, 2020 at 08:14:43PM -0700, Matthew Wilcox wrote:
On Sun, Apr 19, 2020 at 12:51:18AM +0200, Guoqing Jiang wrote:
When reading md code, I find md-bitmap.c copies __clear_page_buffers from
buffer.c, and after more search, seems there are some places in fs could
use this function directly. So this patchset tries to export the function
and use it to cleanup code.
OK, I see why you did this, but there are a couple of problems with it.
One is just a sequencing problem; between exporting __clear_page_buffers()
and removing it from the md code, the md code won't build.
More seriously, most of this code has nothing to do with buffers. It
uses page->private for its own purposes.
What I would do instead is add:
clear_page_private(struct page *page)
{
ClearPagePrivate(page);
set_page_private(page, 0);
put_page(page);
}
to include/linux/mm.h, then convert all callers of __clear_page_buffers()
to call that instead.
Agreed with the new naming (__clear_page_buffers is confusing), that is not
only for initial use buffer head, but a generic convention for all unlocked
PagePrivate pages (such migration & reclaim paths indicate that).
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/mm.h?h=v5.7-rc1#n990
Thanks for the link, and will rename the function to clear_page_private.
Thanks,
Guoqing