Brian Foster
41b9d7263e
xfs: trim eofblocks before collapse range
...
xfs_collapse_file_space() currently writes back the entire file
undergoing collapse range to settle things down for the extent shift
algorithm. While this prevents changes to the extent list during the
collapse operation, the writeback itself is not enough to prevent
unnecessary collapse failures.
The current shift algorithm uses the extent index to iterate the in-core
extent list. If a post-eof delalloc extent persists after the writeback
(e.g., a prior zero range op where the end of the range aligns with eof
can separate the post-eof blocks such that they are not written back and
converted), xfs_bmap_shift_extents() becomes confused over the encoded
br_startblock value and fails the collapse.
As with the full writeback, this is a temporary fix until the algorithm
is improved to cope with a volatile extent list and avoid attempts to
shift post-eof extents.
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-09-02 12:12:53 +10:00
..
libxfs
xfs: don't log inode unless extent shift makes extent modifications
2014-09-02 12:12:53 +10:00
Kconfig
xfs: require 64-bit sector_t
2014-07-30 09:12:05 +10:00
kmem.c
kmem.h
Makefile
xfs: add xfs_mount sysfs kobject
2014-07-15 08:07:01 +10:00
mrlock.h
time.h
uuid.c
uuid.h
xfs.h
xfs_acl.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_acl.h
xfs_aops.c
xfs: don't dirty buffers beyond EOF
2014-09-02 12:12:51 +10:00
xfs_aops.h
xfs_attr.h
xfs_attr_inactive.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_attr_list.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_bit.c
xfs_bmap_util.c
xfs: trim eofblocks before collapse range
2014-09-02 12:12:53 +10:00
xfs_bmap_util.h
xfs: refine the allocation stack switch
2014-07-15 07:08:24 +10:00
xfs_buf.c
xfs: catch buffers written without verifiers attached
2014-08-04 12:42:40 +10:00
xfs_buf.h
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_buf_item.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_buf_item.h
xfs_dir2_readdir.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_discard.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_discard.h
xfs_dquot.c
xfs: quotacheck leaves dquot buffers without verifiers
2014-08-04 12:43:26 +10:00
xfs_dquot.h
xfs: run an eofblocks scan on ENOSPC/EDQUOT
2014-07-24 19:49:28 +10:00
xfs_dquot_item.c
xfs_dquot_item.h
xfs_error.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_error.h
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_export.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_export.h
xfs_extent_busy.c
xfs_extent_busy.h
xfs_extfree_item.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_extfree_item.h
xfs_file.c
xfs: use ranged writeback and invalidation for direct IO
2014-09-02 12:12:53 +10:00
xfs_filestream.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_filestream.h
xfs_fs.h
Merge branch 'xfs-misc-fixes-3.17-1' into for-next
2014-08-04 13:54:14 +10:00
xfs_fsops.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_fsops.h
xfs_globals.c
xfs_icache.c
xfs: run an eofblocks scan on ENOSPC/EDQUOT
2014-07-24 19:49:28 +10:00
xfs_icache.h
xfs: run an eofblocks scan on ENOSPC/EDQUOT
2014-07-24 19:49:28 +10:00
xfs_icreate_item.c
xfs_icreate_item.h
xfs_inode.c
xfs: kill VN_DIRTY()
2014-08-04 13:22:49 +10:00
xfs_inode.h
xfs: kill xfs_vnode.h
2014-08-04 13:28:20 +10:00
xfs_inode_item.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_inode_item.h
xfs_ioctl.c
Merge branch 'xfs-misc-fixes-3.17-2' into for-next
2014-08-04 13:55:27 +10:00
xfs_ioctl.h
xfs_ioctl32.c
Merge branch 'xfs-misc-fixes-3.17-2' into for-next
2014-08-04 13:55:27 +10:00
xfs_ioctl32.h
xfs_iomap.c
Merge branch 'xfs-quota-eofblocks-scan' into for-next
2014-08-04 13:53:47 +10:00
xfs_iomap.h
xfs_iops.c
xfs: fix rounding error of fiemap length parameter
2014-08-04 11:35:35 +10:00
xfs_iops.h
xfs_itable.c
xfs: introduce xfs_bulkstat_ag_ichunk
2014-08-04 11:22:31 +10:00
xfs_itable.h
xfs: introduce xfs_bulkstat_ag_ichunk
2014-08-04 11:22:31 +10:00
xfs_linux.h
Merge branch 'xfs-misc-fixes-3.17-2' into for-next
2014-08-04 13:55:27 +10:00
xfs_log.c
Merge branch 'xfs-misc-fixes-3.17-2' into for-next
2014-08-04 13:55:27 +10:00
xfs_log.h
xfs_log_cil.c
xfs: fix cil push sequence after log recovery
2014-07-24 20:49:40 +10:00
xfs_log_priv.h
xfs: add xlog sysfs kobject and attribute handlers
2014-07-15 08:07:29 +10:00
xfs_log_recover.c
xfs: dquot recovery needs verifiers
2014-08-04 12:59:31 +10:00
xfs_message.c
xfs_message.h
xfs_mount.c
Merge branch 'xfs-misc-fixes-3.17-2' into for-next
2014-08-04 13:55:27 +10:00
xfs_mount.h
xfs: add xfs_mount sysfs kobject
2014-07-15 08:07:01 +10:00
xfs_mru_cache.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_mru_cache.h
xfs_qm.c
Merge branch 'xfs-misc-fixes-3.17-2' into for-next
2014-08-04 13:55:27 +10:00
xfs_qm.h
xfs: mark xfs_qm_quotacheck as static
2014-07-24 20:49:57 +10:00
xfs_qm_bhv.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_qm_syscalls.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_quota.h
xfs_quotaops.c
xfs: fix uflags detection at xfs_fs_rm_xquota
2014-07-24 21:27:17 +10:00
xfs_rtalloc.c
xfs: require 64-bit sector_t
2014-07-30 09:12:05 +10:00
xfs_rtalloc.h
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_stats.c
xfs_stats.h
xfs_super.c
Merge branch 'xfs-misc-fixes-3.17-1' into for-next
2014-08-04 13:54:14 +10:00
xfs_super.h
xfs: require 64-bit sector_t
2014-07-30 09:12:05 +10:00
xfs_symlink.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_symlink.h
xfs_sysctl.c
xfs_sysctl.h
xfs_sysfs.c
xfs: add log attributes for log lsn and grant head data
2014-07-15 08:07:48 +10:00
xfs_sysfs.h
xfs: add xlog sysfs kobject and attribute handlers
2014-07-15 08:07:29 +10:00
xfs_trace.c
xfs_trace.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-06-12 10:30:18 -07:00
xfs_trans.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_trans.h
xfs_trans_ail.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_trans_buf.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_trans_dquot.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00
xfs_trans_extfree.c
xfs_trans_inode.c
xfs_trans_priv.h
xfs_types.h
xfs: require 64-bit sector_t
2014-07-30 09:12:05 +10:00
xfs_xattr.c
xfs: global error sign conversion
2014-06-25 14:58:08 +10:00