From: Shiyang Ruan <ruansy.fnst@fujitsu.com>
To: <linux-kernel@vger.kernel.org>, <linux-xfs@vger.kernel.org>,
<linux-nvdimm@lists.01.org>, <linux-fsdevel@vger.kernel.org>
Cc: darrick.wong@oracle.com, willy@infradead.org, jack@suse.cz,
viro@zeniv.linux.org.uk, linux-btrfs@vger.kernel.org,
ocfs2-devel@oss.oracle.com, david@fromorbit.com, hch@lst.de,
rgoldwyn@suse.de
Subject: [PATCH v2 09/10] fs/xfs: Handle CoW for fsdax write() path
Date: Fri, 26 Feb 2021 08:20:29 +0800 [thread overview]
Message-ID: <20210226002030.653855-10-ruansy.fnst@fujitsu.com> (raw)
In-Reply-To: <20210226002030.653855-1-ruansy.fnst@fujitsu.com>
In fsdax mode, WRITE and ZERO on a shared extent need CoW performed. After
CoW, new allocated extents needs to be remapped to the file. So, add an
iomap_end for dax write ops to do the remapping work.
Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com>
---
fs/xfs/xfs_bmap_util.c | 3 ++-
fs/xfs/xfs_file.c | 9 +++------
fs/xfs/xfs_iomap.c | 30 +++++++++++++++++++++++++++++-
fs/xfs/xfs_iomap.h | 1 +
fs/xfs/xfs_iops.c | 11 ++++++++---
fs/xfs/xfs_reflink.c | 2 ++
6 files changed, 45 insertions(+), 11 deletions(-)
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
index 7371a7f7c652..65a8782b6378 100644
--- a/fs/xfs/xfs_bmap_util.c
+++ b/fs/xfs/xfs_bmap_util.c
@@ -977,7 +977,8 @@ xfs_free_file_space(
if (offset + len > XFS_ISIZE(ip))
len = XFS_ISIZE(ip) - offset;
error = iomap_zero_range(VFS_I(ip), offset, len, NULL,
- &xfs_buffered_write_iomap_ops);
+ IS_DAX(VFS_I(ip)) ?
+ &xfs_dax_write_iomap_ops : &xfs_buffered_write_iomap_ops);
if (error)
return error;
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 5b0f93f73837..1987d15eab61 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -623,11 +623,8 @@ xfs_file_dax_write(
count = iov_iter_count(from);
trace_xfs_file_dax_write(ip, count, pos);
- ret = dax_iomap_rw(iocb, from, &xfs_direct_write_iomap_ops);
- if (ret > 0 && iocb->ki_pos > i_size_read(inode)) {
- i_size_write(inode, iocb->ki_pos);
- error = xfs_setfilesize(ip, pos, ret);
- }
+ ret = dax_iomap_rw(iocb, from, &xfs_dax_write_iomap_ops);
+
out:
xfs_iunlock(ip, iolock);
if (error)
@@ -1250,7 +1247,7 @@ __xfs_filemap_fault(
ret = dax_iomap_fault(vmf, pe_size, &pfn, NULL,
(write_fault && !vmf->cow_page) ?
- &xfs_direct_write_iomap_ops :
+ &xfs_dax_write_iomap_ops :
&xfs_read_iomap_ops);
if (ret & VM_FAULT_NEEDDSYNC)
ret = dax_finish_sync_fault(vmf, pe_size, pfn);
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index 7b9ff824e82d..23c6f8c97047 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -771,7 +771,8 @@ xfs_direct_write_iomap_begin(
/* may drop and re-acquire the ilock */
error = xfs_reflink_allocate_cow(ip, &imap, &cmap, &shared,
- &lockmode, flags & IOMAP_DIRECT);
+ &lockmode,
+ flags & IOMAP_DIRECT || IS_DAX(inode));
if (error)
goto out_unlock;
if (shared)
@@ -850,6 +851,33 @@ const struct iomap_ops xfs_direct_write_iomap_ops = {
.iomap_begin = xfs_direct_write_iomap_begin,
};
+static int
+xfs_dax_write_iomap_end(
+ struct inode *inode,
+ loff_t pos,
+ loff_t length,
+ ssize_t written,
+ unsigned int flags,
+ struct iomap *iomap)
+{
+ int error = 0;
+ xfs_inode_t *ip = XFS_I(inode);
+
+ if (pos + written > i_size_read(inode)) {
+ i_size_write(inode, pos + written);
+ error = xfs_setfilesize(ip, pos, written);
+ }
+ if (xfs_is_cow_inode(ip))
+ error = xfs_reflink_end_cow(ip, pos, written);
+
+ return error;
+}
+
+const struct iomap_ops xfs_dax_write_iomap_ops = {
+ .iomap_begin = xfs_direct_write_iomap_begin,
+ .iomap_end = xfs_dax_write_iomap_end,
+};
+
static int
xfs_buffered_write_iomap_begin(
struct inode *inode,
diff --git a/fs/xfs/xfs_iomap.h b/fs/xfs/xfs_iomap.h
index 7d3703556d0e..a361c2f27cf3 100644
--- a/fs/xfs/xfs_iomap.h
+++ b/fs/xfs/xfs_iomap.h
@@ -42,6 +42,7 @@ xfs_aligned_fsb_count(
extern const struct iomap_ops xfs_buffered_write_iomap_ops;
extern const struct iomap_ops xfs_direct_write_iomap_ops;
+extern const struct iomap_ops xfs_dax_write_iomap_ops;
extern const struct iomap_ops xfs_read_iomap_ops;
extern const struct iomap_ops xfs_seek_iomap_ops;
extern const struct iomap_ops xfs_xattr_iomap_ops;
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 67c8dc9de8aa..adf4467ab862 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -841,6 +841,7 @@ xfs_setattr_size(
int error;
uint lock_flags = 0;
bool did_zeroing = false;
+ const struct iomap_ops *ops;
ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL));
ASSERT(xfs_isilocked(ip, XFS_MMAPLOCK_EXCL));
@@ -887,10 +888,15 @@ xfs_setattr_size(
* extension, or zeroing out the rest of the block on a downward
* truncate.
*/
+ if (IS_DAX(inode))
+ ops = &xfs_direct_write_iomap_ops;
+ else
+ ops = &xfs_buffered_write_iomap_ops;
+
if (newsize > oldsize) {
trace_xfs_zero_eof(ip, oldsize, newsize - oldsize);
error = iomap_zero_range(inode, oldsize, newsize - oldsize,
- &did_zeroing, &xfs_buffered_write_iomap_ops);
+ &did_zeroing, ops);
} else {
/*
* iomap won't detect a dirty page over an unwritten block (or a
@@ -902,8 +908,7 @@ xfs_setattr_size(
newsize);
if (error)
return error;
- error = iomap_truncate_page(inode, newsize, &did_zeroing,
- &xfs_buffered_write_iomap_ops);
+ error = iomap_truncate_page(inode, newsize, &did_zeroing, ops);
}
if (error)
diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c
index f5b3a3da36b7..dfe4e1912ff9 100644
--- a/fs/xfs/xfs_reflink.c
+++ b/fs/xfs/xfs_reflink.c
@@ -1246,6 +1246,8 @@ xfs_reflink_zero_posteof(
trace_xfs_zero_eof(ip, isize, pos - isize);
return iomap_zero_range(VFS_I(ip), isize, pos - isize, NULL,
+ IS_DAX(VFS_I(ip)) ?
+ &xfs_dax_write_iomap_ops :
&xfs_buffered_write_iomap_ops);
}
--
2.30.1
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: Shiyang Ruan <ruansy.fnst@fujitsu.com>
To: <linux-kernel@vger.kernel.org>, <linux-xfs@vger.kernel.org>,
<linux-nvdimm@lists.01.org>, <linux-fsdevel@vger.kernel.org>
Cc: <darrick.wong@oracle.com>, <dan.j.williams@intel.com>,
<willy@infradead.org>, <jack@suse.cz>, <viro@zeniv.linux.org.uk>,
<linux-btrfs@vger.kernel.org>, <ocfs2-devel@oss.oracle.com>,
<david@fromorbit.com>, <hch@lst.de>, <rgoldwyn@suse.de>
Subject: [PATCH v2 09/10] fs/xfs: Handle CoW for fsdax write() path
Date: Fri, 26 Feb 2021 08:20:29 +0800 [thread overview]
Message-ID: <20210226002030.653855-10-ruansy.fnst@fujitsu.com> (raw)
In-Reply-To: <20210226002030.653855-1-ruansy.fnst@fujitsu.com>
In fsdax mode, WRITE and ZERO on a shared extent need CoW performed. After
CoW, new allocated extents needs to be remapped to the file. So, add an
iomap_end for dax write ops to do the remapping work.
Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com>
---
fs/xfs/xfs_bmap_util.c | 3 ++-
fs/xfs/xfs_file.c | 9 +++------
fs/xfs/xfs_iomap.c | 30 +++++++++++++++++++++++++++++-
fs/xfs/xfs_iomap.h | 1 +
fs/xfs/xfs_iops.c | 11 ++++++++---
fs/xfs/xfs_reflink.c | 2 ++
6 files changed, 45 insertions(+), 11 deletions(-)
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
index 7371a7f7c652..65a8782b6378 100644
--- a/fs/xfs/xfs_bmap_util.c
+++ b/fs/xfs/xfs_bmap_util.c
@@ -977,7 +977,8 @@ xfs_free_file_space(
if (offset + len > XFS_ISIZE(ip))
len = XFS_ISIZE(ip) - offset;
error = iomap_zero_range(VFS_I(ip), offset, len, NULL,
- &xfs_buffered_write_iomap_ops);
+ IS_DAX(VFS_I(ip)) ?
+ &xfs_dax_write_iomap_ops : &xfs_buffered_write_iomap_ops);
if (error)
return error;
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 5b0f93f73837..1987d15eab61 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -623,11 +623,8 @@ xfs_file_dax_write(
count = iov_iter_count(from);
trace_xfs_file_dax_write(ip, count, pos);
- ret = dax_iomap_rw(iocb, from, &xfs_direct_write_iomap_ops);
- if (ret > 0 && iocb->ki_pos > i_size_read(inode)) {
- i_size_write(inode, iocb->ki_pos);
- error = xfs_setfilesize(ip, pos, ret);
- }
+ ret = dax_iomap_rw(iocb, from, &xfs_dax_write_iomap_ops);
+
out:
xfs_iunlock(ip, iolock);
if (error)
@@ -1250,7 +1247,7 @@ __xfs_filemap_fault(
ret = dax_iomap_fault(vmf, pe_size, &pfn, NULL,
(write_fault && !vmf->cow_page) ?
- &xfs_direct_write_iomap_ops :
+ &xfs_dax_write_iomap_ops :
&xfs_read_iomap_ops);
if (ret & VM_FAULT_NEEDDSYNC)
ret = dax_finish_sync_fault(vmf, pe_size, pfn);
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index 7b9ff824e82d..23c6f8c97047 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -771,7 +771,8 @@ xfs_direct_write_iomap_begin(
/* may drop and re-acquire the ilock */
error = xfs_reflink_allocate_cow(ip, &imap, &cmap, &shared,
- &lockmode, flags & IOMAP_DIRECT);
+ &lockmode,
+ flags & IOMAP_DIRECT || IS_DAX(inode));
if (error)
goto out_unlock;
if (shared)
@@ -850,6 +851,33 @@ const struct iomap_ops xfs_direct_write_iomap_ops = {
.iomap_begin = xfs_direct_write_iomap_begin,
};
+static int
+xfs_dax_write_iomap_end(
+ struct inode *inode,
+ loff_t pos,
+ loff_t length,
+ ssize_t written,
+ unsigned int flags,
+ struct iomap *iomap)
+{
+ int error = 0;
+ xfs_inode_t *ip = XFS_I(inode);
+
+ if (pos + written > i_size_read(inode)) {
+ i_size_write(inode, pos + written);
+ error = xfs_setfilesize(ip, pos, written);
+ }
+ if (xfs_is_cow_inode(ip))
+ error = xfs_reflink_end_cow(ip, pos, written);
+
+ return error;
+}
+
+const struct iomap_ops xfs_dax_write_iomap_ops = {
+ .iomap_begin = xfs_direct_write_iomap_begin,
+ .iomap_end = xfs_dax_write_iomap_end,
+};
+
static int
xfs_buffered_write_iomap_begin(
struct inode *inode,
diff --git a/fs/xfs/xfs_iomap.h b/fs/xfs/xfs_iomap.h
index 7d3703556d0e..a361c2f27cf3 100644
--- a/fs/xfs/xfs_iomap.h
+++ b/fs/xfs/xfs_iomap.h
@@ -42,6 +42,7 @@ xfs_aligned_fsb_count(
extern const struct iomap_ops xfs_buffered_write_iomap_ops;
extern const struct iomap_ops xfs_direct_write_iomap_ops;
+extern const struct iomap_ops xfs_dax_write_iomap_ops;
extern const struct iomap_ops xfs_read_iomap_ops;
extern const struct iomap_ops xfs_seek_iomap_ops;
extern const struct iomap_ops xfs_xattr_iomap_ops;
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 67c8dc9de8aa..adf4467ab862 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -841,6 +841,7 @@ xfs_setattr_size(
int error;
uint lock_flags = 0;
bool did_zeroing = false;
+ const struct iomap_ops *ops;
ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL));
ASSERT(xfs_isilocked(ip, XFS_MMAPLOCK_EXCL));
@@ -887,10 +888,15 @@ xfs_setattr_size(
* extension, or zeroing out the rest of the block on a downward
* truncate.
*/
+ if (IS_DAX(inode))
+ ops = &xfs_direct_write_iomap_ops;
+ else
+ ops = &xfs_buffered_write_iomap_ops;
+
if (newsize > oldsize) {
trace_xfs_zero_eof(ip, oldsize, newsize - oldsize);
error = iomap_zero_range(inode, oldsize, newsize - oldsize,
- &did_zeroing, &xfs_buffered_write_iomap_ops);
+ &did_zeroing, ops);
} else {
/*
* iomap won't detect a dirty page over an unwritten block (or a
@@ -902,8 +908,7 @@ xfs_setattr_size(
newsize);
if (error)
return error;
- error = iomap_truncate_page(inode, newsize, &did_zeroing,
- &xfs_buffered_write_iomap_ops);
+ error = iomap_truncate_page(inode, newsize, &did_zeroing, ops);
}
if (error)
diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c
index f5b3a3da36b7..dfe4e1912ff9 100644
--- a/fs/xfs/xfs_reflink.c
+++ b/fs/xfs/xfs_reflink.c
@@ -1246,6 +1246,8 @@ xfs_reflink_zero_posteof(
trace_xfs_zero_eof(ip, isize, pos - isize);
return iomap_zero_range(VFS_I(ip), isize, pos - isize, NULL,
+ IS_DAX(VFS_I(ip)) ?
+ &xfs_dax_write_iomap_ops :
&xfs_buffered_write_iomap_ops);
}
--
2.30.1
WARNING: multiple messages have this Message-ID (diff)
From: Shiyang Ruan <ruansy.fnst@fujitsu.com>
To: <linux-kernel@vger.kernel.org>, <linux-xfs@vger.kernel.org>,
<linux-nvdimm@lists.01.org>, <linux-fsdevel@vger.kernel.org>
Cc: jack@suse.cz, darrick.wong@oracle.com, david@fromorbit.com,
ocfs2-devel@oss.oracle.com, viro@zeniv.linux.org.uk,
dan.j.williams@intel.com, linux-btrfs@vger.kernel.org
Subject: [Ocfs2-devel] [PATCH v2 09/10] fs/xfs: Handle CoW for fsdax write() path
Date: Fri, 26 Feb 2021 08:20:29 +0800 [thread overview]
Message-ID: <20210226002030.653855-10-ruansy.fnst@fujitsu.com> (raw)
In-Reply-To: <20210226002030.653855-1-ruansy.fnst@fujitsu.com>
In fsdax mode, WRITE and ZERO on a shared extent need CoW performed. After
CoW, new allocated extents needs to be remapped to the file. So, add an
iomap_end for dax write ops to do the remapping work.
Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com>
---
fs/xfs/xfs_bmap_util.c | 3 ++-
fs/xfs/xfs_file.c | 9 +++------
fs/xfs/xfs_iomap.c | 30 +++++++++++++++++++++++++++++-
fs/xfs/xfs_iomap.h | 1 +
fs/xfs/xfs_iops.c | 11 ++++++++---
fs/xfs/xfs_reflink.c | 2 ++
6 files changed, 45 insertions(+), 11 deletions(-)
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
index 7371a7f7c652..65a8782b6378 100644
--- a/fs/xfs/xfs_bmap_util.c
+++ b/fs/xfs/xfs_bmap_util.c
@@ -977,7 +977,8 @@ xfs_free_file_space(
if (offset + len > XFS_ISIZE(ip))
len = XFS_ISIZE(ip) - offset;
error = iomap_zero_range(VFS_I(ip), offset, len, NULL,
- &xfs_buffered_write_iomap_ops);
+ IS_DAX(VFS_I(ip)) ?
+ &xfs_dax_write_iomap_ops : &xfs_buffered_write_iomap_ops);
if (error)
return error;
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 5b0f93f73837..1987d15eab61 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -623,11 +623,8 @@ xfs_file_dax_write(
count = iov_iter_count(from);
trace_xfs_file_dax_write(ip, count, pos);
- ret = dax_iomap_rw(iocb, from, &xfs_direct_write_iomap_ops);
- if (ret > 0 && iocb->ki_pos > i_size_read(inode)) {
- i_size_write(inode, iocb->ki_pos);
- error = xfs_setfilesize(ip, pos, ret);
- }
+ ret = dax_iomap_rw(iocb, from, &xfs_dax_write_iomap_ops);
+
out:
xfs_iunlock(ip, iolock);
if (error)
@@ -1250,7 +1247,7 @@ __xfs_filemap_fault(
ret = dax_iomap_fault(vmf, pe_size, &pfn, NULL,
(write_fault && !vmf->cow_page) ?
- &xfs_direct_write_iomap_ops :
+ &xfs_dax_write_iomap_ops :
&xfs_read_iomap_ops);
if (ret & VM_FAULT_NEEDDSYNC)
ret = dax_finish_sync_fault(vmf, pe_size, pfn);
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index 7b9ff824e82d..23c6f8c97047 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -771,7 +771,8 @@ xfs_direct_write_iomap_begin(
/* may drop and re-acquire the ilock */
error = xfs_reflink_allocate_cow(ip, &imap, &cmap, &shared,
- &lockmode, flags & IOMAP_DIRECT);
+ &lockmode,
+ flags & IOMAP_DIRECT || IS_DAX(inode));
if (error)
goto out_unlock;
if (shared)
@@ -850,6 +851,33 @@ const struct iomap_ops xfs_direct_write_iomap_ops = {
.iomap_begin = xfs_direct_write_iomap_begin,
};
+static int
+xfs_dax_write_iomap_end(
+ struct inode *inode,
+ loff_t pos,
+ loff_t length,
+ ssize_t written,
+ unsigned int flags,
+ struct iomap *iomap)
+{
+ int error = 0;
+ xfs_inode_t *ip = XFS_I(inode);
+
+ if (pos + written > i_size_read(inode)) {
+ i_size_write(inode, pos + written);
+ error = xfs_setfilesize(ip, pos, written);
+ }
+ if (xfs_is_cow_inode(ip))
+ error = xfs_reflink_end_cow(ip, pos, written);
+
+ return error;
+}
+
+const struct iomap_ops xfs_dax_write_iomap_ops = {
+ .iomap_begin = xfs_direct_write_iomap_begin,
+ .iomap_end = xfs_dax_write_iomap_end,
+};
+
static int
xfs_buffered_write_iomap_begin(
struct inode *inode,
diff --git a/fs/xfs/xfs_iomap.h b/fs/xfs/xfs_iomap.h
index 7d3703556d0e..a361c2f27cf3 100644
--- a/fs/xfs/xfs_iomap.h
+++ b/fs/xfs/xfs_iomap.h
@@ -42,6 +42,7 @@ xfs_aligned_fsb_count(
extern const struct iomap_ops xfs_buffered_write_iomap_ops;
extern const struct iomap_ops xfs_direct_write_iomap_ops;
+extern const struct iomap_ops xfs_dax_write_iomap_ops;
extern const struct iomap_ops xfs_read_iomap_ops;
extern const struct iomap_ops xfs_seek_iomap_ops;
extern const struct iomap_ops xfs_xattr_iomap_ops;
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 67c8dc9de8aa..adf4467ab862 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -841,6 +841,7 @@ xfs_setattr_size(
int error;
uint lock_flags = 0;
bool did_zeroing = false;
+ const struct iomap_ops *ops;
ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL));
ASSERT(xfs_isilocked(ip, XFS_MMAPLOCK_EXCL));
@@ -887,10 +888,15 @@ xfs_setattr_size(
* extension, or zeroing out the rest of the block on a downward
* truncate.
*/
+ if (IS_DAX(inode))
+ ops = &xfs_direct_write_iomap_ops;
+ else
+ ops = &xfs_buffered_write_iomap_ops;
+
if (newsize > oldsize) {
trace_xfs_zero_eof(ip, oldsize, newsize - oldsize);
error = iomap_zero_range(inode, oldsize, newsize - oldsize,
- &did_zeroing, &xfs_buffered_write_iomap_ops);
+ &did_zeroing, ops);
} else {
/*
* iomap won't detect a dirty page over an unwritten block (or a
@@ -902,8 +908,7 @@ xfs_setattr_size(
newsize);
if (error)
return error;
- error = iomap_truncate_page(inode, newsize, &did_zeroing,
- &xfs_buffered_write_iomap_ops);
+ error = iomap_truncate_page(inode, newsize, &did_zeroing, ops);
}
if (error)
diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c
index f5b3a3da36b7..dfe4e1912ff9 100644
--- a/fs/xfs/xfs_reflink.c
+++ b/fs/xfs/xfs_reflink.c
@@ -1246,6 +1246,8 @@ xfs_reflink_zero_posteof(
trace_xfs_zero_eof(ip, isize, pos - isize);
return iomap_zero_range(VFS_I(ip), isize, pos - isize, NULL,
+ IS_DAX(VFS_I(ip)) ?
+ &xfs_dax_write_iomap_ops :
&xfs_buffered_write_iomap_ops);
}
--
2.30.1
_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel
next prev parent reply other threads:[~2021-02-26 0:21 UTC|newest]
Thread overview: 220+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-26 0:20 [PATCH v2 00/10] fsdax,xfs: Add reflink&dedupe support for fsdax Shiyang Ruan
2021-02-26 0:20 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Shiyang Ruan
2021-02-26 0:20 ` [PATCH v2 00/10] fsdax,xfs: " Shiyang Ruan
2021-02-26 0:20 ` [PATCH v2 01/10] fsdax: Factor helpers to simplify dax fault code Shiyang Ruan
2021-02-26 0:20 ` [Ocfs2-devel] " Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-03-03 9:13 ` Christoph Hellwig
2021-03-03 9:13 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 9:13 ` Christoph Hellwig
2021-02-26 0:20 ` [PATCH v2 02/10] fsdax: Factor helper: dax_fault_actor() Shiyang Ruan
2021-02-26 0:20 ` [Ocfs2-devel] " Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-03-03 9:28 ` Christoph Hellwig
2021-03-03 9:28 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 9:28 ` Christoph Hellwig
2021-03-12 9:01 ` ruansy.fnst
2021-03-12 9:01 ` [Ocfs2-devel] " ruansy.fnst
2021-03-12 9:01 ` ruansy.fnst
2021-02-26 0:20 ` [PATCH v2 03/10] fsdax: Output address in dax_iomap_pfn() and rename it Shiyang Ruan
2021-02-26 0:20 ` [Ocfs2-devel] " Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-02-26 0:20 ` [PATCH v2 04/10] fsdax: Introduce dax_iomap_cow_copy() Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-03-03 9:29 ` Christoph Hellwig
2021-03-03 9:29 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 9:29 ` Christoph Hellwig
2021-02-26 0:20 ` [PATCH v2 05/10] fsdax: Replace mmap entry in case of CoW Shiyang Ruan
2021-02-26 0:20 ` [Ocfs2-devel] " Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-03-03 9:30 ` Christoph Hellwig
2021-03-03 9:30 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 9:30 ` Christoph Hellwig
2021-03-03 9:41 ` ruansy.fnst
2021-03-03 9:41 ` [Ocfs2-devel] " ruansy.fnst
2021-03-03 9:41 ` ruansy.fnst
2021-03-03 9:44 ` Christoph Hellwig
2021-03-03 9:44 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 9:44 ` Christoph Hellwig
2021-03-03 9:48 ` Christoph Hellwig
2021-03-03 9:48 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 9:48 ` Christoph Hellwig
2021-02-26 0:20 ` [PATCH v2 06/10] fsdax: Add dax_iomap_cow_copy() for dax_iomap_zero Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-03-03 9:31 ` Christoph Hellwig
2021-03-03 9:31 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 9:31 ` Christoph Hellwig
2021-02-26 0:20 ` [PATCH v2 07/10] iomap: Introduce iomap_apply2() for operations on two files Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-02-26 4:14 ` Darrick J. Wong
2021-02-26 4:14 ` [Ocfs2-devel] " Darrick J. Wong
2021-02-26 4:14 ` Darrick J. Wong
2021-02-26 8:11 ` ruansy.fnst
2021-02-26 8:11 ` [Ocfs2-devel] " ruansy.fnst
2021-02-26 8:11 ` ruansy.fnst
2021-02-26 8:25 ` Shiyang Ruan
2021-02-26 8:25 ` [Ocfs2-devel] " Shiyang Ruan
2021-02-26 8:25 ` Shiyang Ruan
2021-03-04 5:41 ` [RESEND PATCH v2.1 " Shiyang Ruan
2021-03-04 5:41 ` [Ocfs2-devel] " Shiyang Ruan
2021-03-04 5:41 ` Shiyang Ruan
2021-03-11 12:30 ` Christoph Hellwig
2021-03-11 12:30 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-11 12:30 ` Christoph Hellwig
2021-02-26 0:20 ` [PATCH v2 08/10] fsdax: Dedup file range to use a compare function Shiyang Ruan
2021-02-26 0:20 ` [Ocfs2-devel] " Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-02-26 8:28 ` Shiyang Ruan
2021-02-26 8:28 ` [Ocfs2-devel] " Shiyang Ruan
2021-02-26 8:28 ` Shiyang Ruan
2021-03-03 8:20 ` Joe Perches
2021-03-03 8:20 ` [Ocfs2-devel] " Joe Perches
2021-03-03 8:20 ` Joe Perches
2021-03-03 8:45 ` ruansy.fnst
2021-03-03 8:45 ` [Ocfs2-devel] " ruansy.fnst
2021-03-03 9:04 ` Joe Perches
2021-03-03 9:04 ` [Ocfs2-devel] " Joe Perches
2021-03-03 9:39 ` hch
2021-03-03 9:39 ` [Ocfs2-devel] " hch
2021-03-03 9:46 ` ruansy.fnst
2021-03-03 9:46 ` [Ocfs2-devel] " ruansy.fnst
2021-03-04 5:42 ` [RESEND PATCH v2.1 " Shiyang Ruan
2021-03-04 5:42 ` [Ocfs2-devel] " Shiyang Ruan
2021-03-04 5:42 ` Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan [this message]
2021-02-26 0:20 ` [Ocfs2-devel] [PATCH v2 09/10] fs/xfs: Handle CoW for fsdax write() path Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-03-03 9:43 ` Christoph Hellwig
2021-03-03 9:43 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 9:43 ` Christoph Hellwig
2021-03-03 9:57 ` ruansy.fnst
2021-03-03 9:57 ` [Ocfs2-devel] " ruansy.fnst
2021-03-03 9:57 ` ruansy.fnst
2021-03-03 10:43 ` Christoph Hellwig
2021-03-03 10:43 ` [Ocfs2-devel] " Christoph Hellwig
2021-03-03 10:43 ` Christoph Hellwig
2021-03-04 1:35 ` ruansy.fnst
2021-03-04 1:35 ` [Ocfs2-devel] " ruansy.fnst
2021-03-04 1:35 ` ruansy.fnst
2021-02-26 0:20 ` [PATCH v2 10/10] fs/xfs: Add dedupe support for fsdax Shiyang Ruan
2021-02-26 0:20 ` [Ocfs2-devel] " Shiyang Ruan
2021-02-26 0:20 ` Shiyang Ruan
2021-02-26 9:45 ` Question about the "EXPERIMENTAL" tag for dax in XFS ruansy.fnst
2021-02-26 9:45 ` [Ocfs2-devel] " ruansy.fnst
2021-02-26 9:45 ` ruansy.fnst
2021-02-26 19:04 ` Darrick J. Wong
2021-02-26 19:04 ` [Ocfs2-devel] " Darrick J. Wong
2021-02-26 19:04 ` Darrick J. Wong
2021-02-26 19:24 ` Dan Williams
2021-02-26 19:24 ` [Ocfs2-devel] " Dan Williams
2021-02-26 19:24 ` Dan Williams
2021-02-26 20:51 ` Dave Chinner
2021-02-26 20:51 ` [Ocfs2-devel] " Dave Chinner
2021-02-26 20:51 ` Dave Chinner
2021-02-26 20:59 ` Dan Williams
2021-02-26 20:59 ` [Ocfs2-devel] " Dan Williams
2021-02-26 20:59 ` Dan Williams
2021-02-26 21:27 ` Dave Chinner
2021-02-26 21:27 ` [Ocfs2-devel] " Dave Chinner
2021-02-26 21:27 ` Dave Chinner
2021-02-26 22:41 ` Dan Williams
2021-02-26 22:41 ` [Ocfs2-devel] " Dan Williams
2021-02-26 22:41 ` Dan Williams
2021-02-27 22:36 ` Dave Chinner
2021-02-27 22:36 ` [Ocfs2-devel] " Dave Chinner
2021-02-27 22:36 ` Dave Chinner
2021-02-27 23:40 ` Dan Williams
2021-02-27 23:40 ` [Ocfs2-devel] " Dan Williams
2021-02-27 23:40 ` Dan Williams
2021-02-28 22:38 ` Dave Chinner
2021-02-28 22:38 ` [Ocfs2-devel] " Dave Chinner
2021-02-28 22:38 ` Dave Chinner
2021-03-01 20:55 ` Dan Williams
2021-03-01 20:55 ` [Ocfs2-devel] " Dan Williams
2021-03-01 20:55 ` Dan Williams
2021-03-01 22:46 ` Dave Chinner
2021-03-01 22:46 ` [Ocfs2-devel] " Dave Chinner
2021-03-01 22:46 ` Dave Chinner
2021-03-02 0:32 ` Dan Williams
2021-03-02 0:32 ` [Ocfs2-devel] " Dan Williams
2021-03-02 0:32 ` Dan Williams
2021-03-02 2:42 ` Dave Chinner
2021-03-02 2:42 ` [Ocfs2-devel] " Dave Chinner
2021-03-02 2:42 ` Dave Chinner
2021-03-02 3:33 ` Dan Williams
2021-03-02 3:33 ` [Ocfs2-devel] " Dan Williams
2021-03-02 3:33 ` Dan Williams
2021-03-02 5:38 ` Dave Chinner
2021-03-02 5:38 ` [Ocfs2-devel] " Dave Chinner
2021-03-02 5:38 ` Dave Chinner
2021-03-02 5:50 ` Dan Williams
2021-03-02 5:50 ` [Ocfs2-devel] " Dan Williams
2021-03-02 5:50 ` Dan Williams
2021-03-02 3:28 ` Darrick J. Wong
2021-03-02 3:28 ` [Ocfs2-devel] " Darrick J. Wong
2021-03-02 3:28 ` Darrick J. Wong
2021-03-02 5:41 ` Dan Williams
2021-03-02 5:41 ` [Ocfs2-devel] " Dan Williams
2021-03-02 5:41 ` Dan Williams
2021-03-02 7:57 ` Dave Chinner
2021-03-02 7:57 ` [Ocfs2-devel] " Dave Chinner
2021-03-02 7:57 ` Dave Chinner
2021-03-02 17:49 ` Dan Williams
2021-03-02 17:49 ` [Ocfs2-devel] " Dan Williams
2021-03-02 17:49 ` Dan Williams
2021-03-04 23:40 ` Darrick J. Wong
2021-03-04 23:40 ` [Ocfs2-devel] " Darrick J. Wong
2021-03-04 23:40 ` Darrick J. Wong
2021-03-01 7:26 ` Yasunori Goto
2021-03-01 7:26 ` [Ocfs2-devel] " Yasunori Goto
2021-03-01 7:26 ` Yasunori Goto
2021-03-01 21:34 ` Dan Williams
2021-03-01 21:34 ` [Ocfs2-devel] " Dan Williams
2021-03-01 21:34 ` Dan Williams
2021-03-09 6:36 ` [PATCH v2 00/10] fsdax,xfs: Add reflink&dedupe support for fsdax Xiaoguang Wang
2021-03-09 6:36 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Xiaoguang Wang
2021-03-09 6:36 ` [PATCH v2 00/10] fsdax,xfs: " Xiaoguang Wang
2021-03-10 1:32 ` ruansy.fnst
2021-03-10 1:32 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " ruansy.fnst
2021-03-09 16:19 ` [PATCH v2 00/10] fsdax,xfs: " Goldwyn Rodrigues
2021-03-09 16:19 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Goldwyn Rodrigues
2021-03-09 16:19 ` [PATCH v2 00/10] fsdax,xfs: " Goldwyn Rodrigues
2021-03-10 1:26 ` ruansy.fnst
2021-03-10 1:26 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " ruansy.fnst
2021-03-10 1:26 ` [PATCH v2 00/10] fsdax,xfs: " ruansy.fnst
2021-03-10 12:30 ` Neal Gompa
2021-03-10 12:30 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Neal Gompa
2021-03-10 12:30 ` [PATCH v2 00/10] fsdax,xfs: " Neal Gompa
2021-03-10 13:02 ` Matthew Wilcox
2021-03-10 13:02 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Matthew Wilcox
2021-03-10 13:02 ` [PATCH v2 00/10] fsdax,xfs: " Matthew Wilcox
2021-03-10 13:36 ` Neal Gompa
2021-03-10 13:36 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Neal Gompa
2021-03-10 13:36 ` [PATCH v2 00/10] fsdax,xfs: " Neal Gompa
2021-03-10 13:55 ` Matthew Wilcox
2021-03-10 13:55 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Matthew Wilcox
2021-03-10 13:55 ` [PATCH v2 00/10] fsdax,xfs: " Matthew Wilcox
2021-03-10 14:21 ` Goldwyn Rodrigues
2021-03-10 14:21 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Goldwyn Rodrigues
2021-03-10 14:21 ` [PATCH v2 00/10] fsdax,xfs: " Goldwyn Rodrigues
2021-03-10 14:26 ` Matthew Wilcox
2021-03-10 14:26 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Matthew Wilcox
2021-03-10 14:26 ` [PATCH v2 00/10] fsdax,xfs: " Matthew Wilcox
2021-03-10 17:04 ` Goldwyn Rodrigues
2021-03-10 17:04 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Goldwyn Rodrigues
2021-03-10 17:04 ` [PATCH v2 00/10] fsdax,xfs: " Goldwyn Rodrigues
2021-03-11 0:53 ` Dan Williams
2021-03-11 0:53 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Dan Williams
2021-03-11 0:53 ` [PATCH v2 00/10] fsdax,xfs: " Dan Williams
2021-03-11 8:26 ` Neal Gompa
2021-03-11 8:26 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Neal Gompa
2021-03-11 8:26 ` [PATCH v2 00/10] fsdax,xfs: " Neal Gompa
2021-03-13 13:07 ` Adam Borowski
2021-03-13 13:07 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Adam Borowski
2021-03-13 13:07 ` [PATCH v2 00/10] fsdax,xfs: " Adam Borowski
2021-03-13 16:24 ` Neal Gompa
2021-03-13 16:24 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Neal Gompa
2021-03-13 16:24 ` [PATCH v2 00/10] fsdax,xfs: " Neal Gompa
2021-03-13 22:00 ` Adam Borowski
2021-03-13 22:00 ` [Ocfs2-devel] [PATCH v2 00/10] fsdax, xfs: " Adam Borowski
2021-03-13 22:00 ` [PATCH v2 00/10] fsdax,xfs: " Adam Borowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210226002030.653855-10-ruansy.fnst@fujitsu.com \
--to=ruansy.fnst@fujitsu.com \
--cc=darrick.wong@oracle.com \
--cc=david@fromorbit.com \
--cc=hch@lst.de \
--cc=jack@suse.cz \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvdimm@lists.01.org \
--cc=linux-xfs@vger.kernel.org \
--cc=ocfs2-devel@oss.oracle.com \
--cc=rgoldwyn@suse.de \
--cc=viro@zeniv.linux.org.uk \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.