On Mon, Nov 28, 2022 at 10:16:23AM +0800, Shiyang Ruan wrote: > > > 在 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/ Oh, ok. I'll pull that one in. All the remaining test failures seem to be related to inode flag states or tests that trip over the lack of delalloc on dax+reflink files. --D > > -- > 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 > > >