On 2018/12/21 下午4:56, Richard Weinberger wrote:
Am Samstag, 15. Dezember 2018, 16:01:30 CET schrieb Richard Weinberger:
The page migration code assumes that a page with PG_private
set has its page count elevated by 1.
UBIFS never did this and therefore the migration code was unable
to migrate some pages owned by UBIFS.
The lead to situations where the CMA memory allocator failed to
allocate memory.
Fix this by using get/put_page when changing PG_private.
Cc: <stable@xxxxxxxxxxxxxxx>
Cc: zhangjun <openzhangj@xxxxxxxxx>
Fixes: 4ac1c17b2044 ("UBIFS: Implement ->migratepage()")
Reported-by: zhangjun <openzhangj@xxxxxxxxx>
Signed-off-by: Richard Weinberger <richard@xxxxxx>
FYI, on the XFS side a similar change caused a regression.
https://marc.info/?l=linux-fsdevel&m=154530861202448&w=2
Until this regression is not fully understood, including the implications
for UBIFS, I'll not merge this patch.
Thanks,
//richard
Hello,richard
Before fully understanding this regression, in order to fix the bug of
cma_alloc(),
submit a conservative patch that modifies count in iomap_migrate_page().
Can you consider merging first?
https://marc.info/?l=linux-kernel&m=154473132332661&w=2
Thanks
//zhangjun