linux/fs/xfs
Brian Foster 13b86fc337 xfs: skip online discard during eofblocks trims
We've had reports of online discard operations being sent from XFS
on write-only workloads. These discards occur as a result of
eofblocks trims that can occur after a large file copy completes.

These discards are slightly confusing for users who might be paying
close attention to online discards (i.e., vdo) due to performance
sensitivity. They also happen to be spurious because freed post-eof
blocks by definition have not been written to during the current
allocation cycle.

Update xfs_free_eofblocks() to skip discards that are purely
attributed to eofblocks trims. This cuts down the number of spurious
discards that may occur on write-only workloads due to normal
preallocation activity.

Note that discards of post-eof extents can still occur from other
codepaths that do not isolate handling of post-eof blocks from those
within eof. For example, file unlinks and truncates may still cause
discards for any file blocks affected by the operation.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
2018-05-10 08:56:47 -07:00
..
libxfs xfs: add bmapi nodiscard flag 2018-05-10 08:56:46 -07:00
scrub xfs: xfs_scrub_iallocbt_xref_rmap_inodes should use xref_set_corrupt 2018-03-23 18:05:09 -07:00
Kconfig fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at 2018-01-01 12:45:37 -07:00
kmem.c xfs: fall back to vmalloc when allocation log vector buffers 2018-03-11 20:27:55 -07:00
kmem.h xfs: fall back to vmalloc when allocation log vector buffers 2018-03-11 20:27:55 -07:00
Makefile xfs: use a b+tree for the in-core extent list 2017-11-06 11:53:41 -08:00
mrlock.h
xfs_acl.c xfs: don't change inode mode if ACL update fails 2017-10-11 10:21:06 -07:00
xfs_acl.h
xfs_aops.c export __set_page_dirty 2018-04-11 10:28:39 -07:00
xfs_aops.h xfs, dax: introduce xfs_dax_aops 2018-03-30 11:34:55 -07:00
xfs_attr_inactive.c xfs: fail if xattr inactivation hits a hole 2017-10-26 15:38:22 -07:00
xfs_attr_list.c xfs: remove u_int* type usage 2017-11-09 15:50:29 -08:00
xfs_attr.h xfs: scrub extended attributes 2017-10-26 15:38:26 -07:00
xfs_bmap_item.c xfs: log item flags are racy 2018-05-10 08:56:41 -07:00
xfs_bmap_item.h xfs: log recovery should replay deferred ops in order 2017-11-27 09:34:08 -08:00
xfs_bmap_util.c xfs: skip online discard during eofblocks trims 2018-05-10 08:56:47 -07:00
xfs_bmap_util.h xfs: simplify the xfs_getbmap interface 2017-10-26 15:38:20 -07:00
xfs_buf_item.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_buf_item.h Use list_head infra-structure for buffer's log items list 2018-01-29 07:27:22 -08:00
xfs_buf.c xfs: don't retry xfs_buf_find on XBF_TRYLOCK failure 2018-05-09 10:04:00 -07:00
xfs_buf.h xfs: make xfs_buf_incore out of line 2018-05-09 10:04:00 -07:00
xfs_dir2_readdir.c xfs: directory scrubber must walk through data block to offset 2018-01-17 21:00:46 -08:00
xfs_discard.c Force log to disk before reading the AGF during a fstrim 2018-04-10 22:39:04 -07:00
xfs_discard.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xfs_dquot_item.c xfs: log item flags are racy 2018-05-10 08:56:41 -07:00
xfs_dquot_item.h
xfs_dquot.c xfs: log item flags are racy 2018-05-10 08:56:41 -07:00
xfs_dquot.h
xfs_error.c xfs: refactor inode buffer verifier error logging 2018-03-23 18:05:07 -07:00
xfs_error.h xfs: refactor inode buffer verifier error logging 2018-03-23 18:05:07 -07:00
xfs_export.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2018-04-05 11:56:35 -07:00
xfs_export.h
xfs_extent_busy.c xfs: merge _xfs_log_force and xfs_log_force 2018-03-14 11:12:52 -07:00
xfs_extent_busy.h
xfs_extfree_item.c xfs: add bmapi nodiscard flag 2018-05-10 08:56:46 -07:00
xfs_extfree_item.h
xfs_file.c iomap: iomap_dio_rw() handles all sync writes 2018-05-09 10:04:01 -07:00
xfs_filestream.c xfs: non-scrub - remove unused function parameters 2018-04-09 10:23:42 -07:00
xfs_filestream.h
xfs_fsmap.c xfs: move two more RT specific functions into CONFIG_XFS_RT 2017-10-16 12:26:50 -07:00
xfs_fsmap.h
xfs_fsops.c xfs: convert XFS_AGFL_SIZE to a helper function 2018-03-11 20:27:56 -07:00
xfs_fsops.h xfs: hoist xfs_fs_geometry to libxfs 2018-01-08 10:54:48 -08:00
xfs_globals.c
xfs_icache.c xfs: log item flags are racy 2018-05-10 08:56:41 -07:00
xfs_icache.h xfs: remove leftover CoW reservations when remounting ro 2017-12-21 08:47:32 -08:00
xfs_icreate_item.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_icreate_item.h
xfs_inode_item.c xfs: log item flags are racy 2018-05-10 08:56:41 -07:00
xfs_inode_item.h xfs: remove inode log format typedef 2017-11-01 15:03:16 -07:00
xfs_inode.c xfs: skip online discard during eofblocks trims 2018-05-10 08:56:47 -07:00
xfs_inode.h xfs: skip online discard during eofblocks trims 2018-05-10 08:56:47 -07:00
xfs_ioctl32.c xfs: refactor the geometry structure filling function 2018-01-08 10:54:48 -08:00
xfs_ioctl32.h
xfs_ioctl.c xfs: refactor the geometry structure filling function 2018-01-08 10:54:48 -08:00
xfs_ioctl.h xfs: remove u_int* type usage 2017-11-09 15:50:29 -08:00
xfs_iomap.c xfs: clean up locking in xfs_file_iomap_begin 2018-05-09 10:04:01 -07:00
xfs_iomap.h xfs: update i_size after unwritten conversion in dio completion 2017-09-26 10:55:19 -07:00
xfs_iops.c Changes since last update: 2018-04-12 13:28:22 -07:00
xfs_iops.h
xfs_itable.c xfs: remove if_rdev 2017-10-26 15:38:27 -07:00
xfs_itable.h xfs: create inode pointer verifiers 2017-10-26 15:38:23 -07:00
xfs_linux.h xfs: use %px for data pointers when debugging 2018-01-12 14:09:08 -08:00
xfs_log_cil.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_log_priv.h locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE() 2017-10-25 11:01:08 +02:00
xfs_log_recover.c xfs: remove unused flags arg from xfs_dquot_verify 2018-05-09 10:04:01 -07:00
xfs_log.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_log.h xfs: non-scrub - remove unused function parameters 2018-04-09 10:23:42 -07:00
xfs_message.c
xfs_message.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xfs_mount.c xfs: clean up xfs_mount allocation and dynamic initializers 2018-03-26 08:54:15 -07:00
xfs_mount.h xfs: detect agfl count corruption and reset agfl 2018-03-23 18:05:06 -07:00
xfs_mru_cache.c xfs: remove filestream item xfs_inode reference 2018-04-09 10:23:39 -07:00
xfs_mru_cache.h xfs: remove filestream item xfs_inode reference 2018-04-09 10:23:39 -07:00
xfs_ondisk.h xfs: Don't log uninitialised fields in inode structures 2017-10-11 10:21:06 -07:00
xfs_pnfs.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xfs_pnfs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xfs_qm_bhv.c
xfs_qm_syscalls.c
xfs_qm.c xfs: log item flags are racy 2018-05-10 08:56:41 -07:00
xfs_qm.h
xfs_quota.h
xfs_quotaops.c VFS: Convert sb->s_flags & MS_RDONLY to sb_rdonly(sb) 2017-07-17 08:45:34 +01:00
xfs_refcount_item.c xfs: log item flags are racy 2018-05-10 08:56:41 -07:00
xfs_refcount_item.h xfs: log recovery should replay deferred ops in order 2017-11-27 09:34:08 -08:00
xfs_reflink.c xfs: fix double ijoin in xfs_reflink_clear_inode_flag() 2018-05-10 08:56:46 -07:00
xfs_reflink.h
xfs_rmap_item.c xfs: log item flags are racy 2018-05-10 08:56:41 -07:00
xfs_rmap_item.h
xfs_rtalloc.c xfs: remove the ip argument to xfs_defer_finish 2017-09-01 10:55:30 -07:00
xfs_rtalloc.h xfs: cross-reference the realtime bitmap 2018-01-17 21:00:46 -08:00
xfs_stats.c
xfs_stats.h
xfs_super.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_super.h xfs: add scrub to XFS_BUILD_OPTIONS 2018-02-01 21:06:15 -08:00
xfs_symlink.c xfs: fix double ijoin in xfs_inactive_symlink_rmt() 2018-05-10 08:56:46 -07:00
xfs_symlink.h
xfs_sysctl.c
xfs_sysctl.h
xfs_sysfs.c
xfs_sysfs.h
xfs_trace.c fs: xfs: remove duplicate includes 2017-12-08 17:51:05 -08:00
xfs_trace.h xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans_ail.c xfs: don't assert fail with AIL lock held 2018-05-10 08:56:46 -07:00
xfs_trans_bmap.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans_buf.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans_dquot.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans_extfree.c xfs: add bmapi nodiscard flag 2018-05-10 08:56:46 -07:00
xfs_trans_inode.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans_priv.h xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans_refcount.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans_rmap.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans.c xfs: get rid of the log item descriptor 2018-05-10 08:56:46 -07:00
xfs_trans.h xfs: add bmapi nodiscard flag 2018-05-10 08:56:46 -07:00
xfs_xattr.c
xfs.h xfs: always define STATIC to static noinline 2017-11-06 11:53:58 -08:00