| To: | xfs@xxxxxxxxxxx |
|---|---|
| Subject: | [PATCH 6/8] xfs: add DAX truncate support |
| From: | Dave Chinner <david@xxxxxxxxxxxxx> |
| Date: | Tue, 24 Mar 2015 21:51:04 +1100 |
| Cc: | linux-fsdevel@xxxxxxxxxxxxxxx, willy@xxxxxxxxxxxxxxx, jack@xxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| In-reply-to: | <1427194266-2885-1-git-send-email-david@xxxxxxxxxxxxx> |
| References: | <1427194266-2885-1-git-send-email-david@xxxxxxxxxxxxx> |
From: Dave Chinner <dchinner@xxxxxxxxxx>
When we truncate a DAX file, we need to call through the DAX page
truncation path rather than through block_truncate_page() so that
mappings and block zeroing are all handled correctly. Otherwise,
truncate does not need to change.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
---
fs/xfs/xfs_iops.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 8b9e688..9ca5352 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -851,7 +851,11 @@ xfs_setattr_size(
* to hope that the caller sees ENOMEM and retries the truncate
* operation.
*/
- error = block_truncate_page(inode->i_mapping, newsize, xfs_get_blocks);
+ if (IS_DAX(inode))
+ error = dax_truncate_page(inode, newsize, xfs_get_blocks_dax);
+ else
+ error = block_truncate_page(inode->i_mapping, newsize,
+ xfs_get_blocks);
if (error)
return error;
truncate_setsize(inode, newsize);
--
2.0.0
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [PATCH 1/8] xfs: mmap lock needs to be inside freeze protection, Dave Chinner |
|---|---|
| Next by Date: | [PATCH 4/8] xfs: add DAX block zeroing support, Dave Chinner |
| Previous by Thread: | [PATCH 1/8] xfs: mmap lock needs to be inside freeze protection, Dave Chinner |
| Next by Thread: | [PATCH 4/8] xfs: add DAX block zeroing support, Dave Chinner |
| Indexes: | [Date] [Thread] [Top] [All Lists] |