Message ID | 1427194266-2885-7-git-send-email-david@fromorbit.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Mar 24, 2015 at 09:51:04PM +1100, Dave Chinner wrote: > From: Dave Chinner <dchinner@redhat.com> > > 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@redhat.com> > --- Reviewed-by: Brian Foster <bfoster@redhat.com> > 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 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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);