Re: [PATCH 0/2] fsdax,xfs: fix warning messages

From: Shiyang Ruan
Date: Sun Nov 27 2022 - 21:16:44 EST




在 2022/11/28 2:38, Darrick J. Wong 写道:
On Thu, Nov 24, 2022 at 02:54:52PM +0000, Shiyang Ruan wrote:
Many testcases failed in dax+reflink mode with warning message in dmesg.
This also effects dax+noreflink mode if we run the test after a
dax+reflink test. So, the most urgent thing is solving the warning
messages.

Patch 1 fixes some mistakes and adds handling of CoW cases not
previously considered (srcmap is HOLE or UNWRITTEN).
Patch 2 adds the implementation of unshare for fsdax.

With these fixes, most warning messages in dax_associate_entry() are
gone. But honestly, generic/388 will randomly failed with the warning.
The case shutdown the xfs when fsstress is running, and do it for many
times. I think the reason is that dax pages in use are not able to be
invalidated in time when fs is shutdown. The next time dax page to be
associated, it still remains the mapping value set last time. I'll keep
on solving it.

The warning message in dax_writeback_one() can also be fixed because of
the dax unshare.

This cuts down the amount of test failures quite a bit, but I think
you're still missing a piece or two -- namely the part that refuses to
enable S_DAX mode on a reflinked file when the inode is being loaded
from disk. However, thank you for fixing dax.c, because that was the
part I couldn't figure out at all. :)

I didn't include it[1] in this patchset...

[1] https://lore.kernel.org/linux-xfs/1663234002-17-1-git-send-email-ruansy.fnst@xxxxxxxxxxx/


--
Thanks,
Ruan.


--D


Shiyang Ruan (2):
fsdax,xfs: fix warning messages at dax_[dis]associate_entry()
fsdax,xfs: port unshare to fsdax

fs/dax.c | 166 ++++++++++++++++++++++++++++++-------------
fs/xfs/xfs_iomap.c | 6 +-
fs/xfs/xfs_reflink.c | 8 ++-
include/linux/dax.h | 2 +
4 files changed, 129 insertions(+), 53 deletions(-)

--
2.38.1