Messages in this thread | | | Subject | Re: [PATCH v2 00/10] fsdax,xfs: Add reflink&dedupe support for fsdax | From | Xiaoguang Wang <> | Date | Tue, 9 Mar 2021 14:36:13 +0800 |
| |
hi,
First thanks for your patchset. I'd like to know whether your patchset pass fstests? Thanks.
Regards, Xiaoguang Wang
> This patchset is attempt to add CoW support for fsdax, and take XFS, > which has both reflink and fsdax feature, as an example. > > Changes from V1: > - Factor some helper functions to simplify dax fault code > - Introduce iomap_apply2() for dax_dedupe_file_range_compare() > - Fix mistakes and other problems > - Rebased on v5.11 > > One of the key mechanism need to be implemented in fsdax is CoW. Copy > the data from srcmap before we actually write data to the destance > iomap. And we just copy range in which data won't be changed. > > Another mechanism is range comparison. In page cache case, readpage() > is used to load data on disk to page cache in order to be able to > compare data. In fsdax case, readpage() does not work. So, we need > another compare data with direct access support. > > With the two mechanism implemented in fsdax, we are able to make reflink > and fsdax work together in XFS. > > > Some of the patches are picked up from Goldwyn's patchset. I made some > changes to adapt to this patchset. > > (Rebased on v5.11) > == > > Shiyang Ruan (10): > fsdax: Factor helpers to simplify dax fault code > fsdax: Factor helper: dax_fault_actor() > fsdax: Output address in dax_iomap_pfn() and rename it > fsdax: Introduce dax_iomap_cow_copy() > fsdax: Replace mmap entry in case of CoW > fsdax: Add dax_iomap_cow_copy() for dax_iomap_zero > iomap: Introduce iomap_apply2() for operations on two files > fsdax: Dedup file range to use a compare function > fs/xfs: Handle CoW for fsdax write() path > fs/xfs: Add dedupe support for fsdax > > fs/dax.c | 532 +++++++++++++++++++++++++++-------------- > fs/iomap/apply.c | 51 ++++ > fs/iomap/buffered-io.c | 2 +- > fs/remap_range.c | 45 +++- > fs/xfs/xfs_bmap_util.c | 3 +- > fs/xfs/xfs_file.c | 29 ++- > fs/xfs/xfs_inode.c | 8 +- > fs/xfs/xfs_inode.h | 1 + > fs/xfs/xfs_iomap.c | 30 ++- > fs/xfs/xfs_iomap.h | 1 + > fs/xfs/xfs_iops.c | 11 +- > fs/xfs/xfs_reflink.c | 16 +- > include/linux/dax.h | 7 +- > include/linux/fs.h | 15 +- > include/linux/iomap.h | 7 +- > 15 files changed, 550 insertions(+), 208 deletions(-) >
| |