This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 579b62f xfs: add background scanning to clear eofblocks inodes 00ca79a xfs: add minimum file size filtering to eofblocks scan 1b55604 xfs: support multiple inode id filtering in eofblocks scan 3e3f9f5 xfs: add inode id filtering to eofblocks scan 8ca149d xfs: add XFS_IOC_FREE_EOFBLOCKS ioctl 41176a6 xfs: create function to scan and clear EOFBLOCKS inodes 40165e2 xfs: make xfs_free_eofblocks() non-static, return EAGAIN on trylock failure 72b53ef xfs: create helper to check whether to free eofblocks on inode a454f74 xfs: support a tag-based inode_ag_iterator 27b5286 xfs: add EOFBLOCKS inode tagging/untagging from 69a58a43f74eb2cb23d9bce2524dae33c289a40f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 579b62faa5fb16ffeeb88cda5e2c4e95730881af Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Tue Nov 6 09:50:47 2012 -0500 xfs: add background scanning to clear eofblocks inodes Create a new mount workqueue and delayed_work to enable background scanning and freeing of eofblocks inodes. The scanner kicks in once speculative preallocation occurs and stops requeueing itself when no eofblocks inodes exist. The scan interval is based on the new 'speculative_prealloc_lifetime' tunable (default to 5m). The background scanner performs unfiltered, best effort scans (which skips inodes under lock contention or with a dirty cache mapping). Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 00ca79a04bef1a1b30ef8afd992d905b6d986caf Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Wed Nov 7 12:21:14 2012 -0500 xfs: add minimum file size filtering to eofblocks scan Support minimum file size filtering in the eofblocks scan. The caller must set the XFS_EOF_FLAGS_MINFILESIZE flags bit and minimum file size value in bytes. Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 1b5560488d1ab7c932f6f99385b41116838c3486 Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Tue Nov 6 09:50:45 2012 -0500 xfs: support multiple inode id filtering in eofblocks scan Enhance the eofblocks scan code to filter based on multiply specified inode id values. When multiple inode id values are specified, only inodes that match all id values are selected. Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 3e3f9f5863548e870edfcc72e7617ac8ddcad44a Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Wed Nov 7 12:21:13 2012 -0500 xfs: add inode id filtering to eofblocks scan Support inode ID filtering in the eofblocks scan. The caller must set the associated XFS_EOF_FLAGS_*ID bit and ID field. Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 8ca149de80478441352a8622ea15fae7de703ced Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Wed Nov 7 12:21:12 2012 -0500 xfs: add XFS_IOC_FREE_EOFBLOCKS ioctl The XFS_IOC_FREE_EOFBLOCKS ioctl allows users to invoke an EOFBLOCKS scan. The xfs_eofblocks structure is defined to support the command parameters (scan mode). Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 41176a68e3f710630feace536d0277a092e206b5 Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Tue Nov 6 09:50:42 2012 -0500 xfs: create function to scan and clear EOFBLOCKS inodes xfs_inodes_free_eofblocks() implements scanning functionality for EOFBLOCKS inodes. It uses the AG iterator to walk the tagged inodes and free post-EOF blocks via the xfs_inode_free_eofblocks() execute function. The scan can be invoked in best-effort mode or wait (force) mode. A best-effort scan (default) handles all inodes that do not have a dirty cache and we successfully acquire the io lock via trylock. In wait mode, we continue to cycle through an AG until all inodes are handled. Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 40165e27617e2a98bf8588001d2f2872fae2fee2 Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Tue Nov 6 09:50:41 2012 -0500 xfs: make xfs_free_eofblocks() non-static, return EAGAIN on trylock failure Turn xfs_free_eofblocks() into a non-static function, return EAGAIN to indicate trylock failure and make sure this error is not propagated in xfs_release(). Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 72b53efa4a6125a4c334871c58268c430605819a Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Tue Nov 6 09:50:40 2012 -0500 xfs: create helper to check whether to free eofblocks on inode This check is used in multiple places to determine whether we should check for (and potentially free) post EOF blocks on an inode. Add a helper to consolidate the check. Note that when we remove an inode from the cache (xfs_inactive()), we are required to trim post-EOF blocks even if the inode is marked preallocated or append-only to maintain correct space accounting. The 'force' parameter to xfs_can_free_eofblocks() specifies whether we should ignore the prealloc/append-only status of the inode. Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit a454f7428ffa03c8e1321124d9074101b7290be6 Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Tue Nov 6 09:50:39 2012 -0500 xfs: support a tag-based inode_ag_iterator Genericize xfs_inode_ag_walk() to support an optional radix tree tag and args argument for the execute function. Create a new wrapper called xfs_inode_ag_iterator_tag() that performs a tag based walk of perag's and inodes. Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 27b52867925e3aaed090063c1c58a7537e6373f3 Author: Brian Foster <bfoster@xxxxxxxxxx> Date: Tue Nov 6 09:50:38 2012 -0500 xfs: add EOFBLOCKS inode tagging/untagging Add the XFS_ICI_EOFBLOCKS_TAG inode tag to identify inodes with speculatively preallocated blocks beyond EOF. An inode is tagged when speculative preallocation occurs and untagged either via truncate down or when post-EOF blocks are freed via release or reclaim. The tag management is intentionally not aggressive to prefer simplicity over the complexity of handling all the corner cases under which post-EOF blocks could be freed (i.e., forward truncation, fallocate, write error conditions, etc.). This means that a tagged inode may or may not have post-EOF blocks after a period of time. The tag is eventually cleared when the inode is released or reclaimed. Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_ag.h | 1 + fs/xfs/xfs_fs.h | 30 +++++++ fs/xfs/xfs_globals.c | 4 +- fs/xfs/xfs_icache.c | 225 ++++++++++++++++++++++++++++++++++++++++++++-- fs/xfs/xfs_icache.h | 14 ++- fs/xfs/xfs_inode.c | 37 ++++++++ fs/xfs/xfs_inode.h | 1 + fs/xfs/xfs_ioctl.c | 21 +++++ fs/xfs/xfs_iomap.c | 8 ++ fs/xfs/xfs_iops.c | 4 + fs/xfs/xfs_linux.h | 1 + fs/xfs/xfs_mount.c | 2 + fs/xfs/xfs_mount.h | 3 + fs/xfs/xfs_qm_syscalls.c | 5 +- fs/xfs/xfs_super.c | 9 ++ fs/xfs/xfs_sysctl.c | 9 ++ fs/xfs/xfs_sysctl.h | 1 + fs/xfs/xfs_trace.h | 6 ++ fs/xfs/xfs_vnodeops.c | 27 +++--- fs/xfs/xfs_vnodeops.h | 1 + 20 files changed, 382 insertions(+), 27 deletions(-) hooks/post-receive -- XFS development tree _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs