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, for-next 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
|