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
a1b7ea5 xfs: use proper interfaces for on-stack plugging
957935d xfs: fix xfs_debug warnings
ecb697c xfs: fix variable set but not used warnings
da8a1a4 xfs: convert log tail checking to a warning
be65b18 xfs: catch bad block numbers freeing extents.
fd07484 xfs: push the AIL from memory reclaim and periodic sync
cd4a3c5 xfs: clean up code layout in xfs_trans_ail.c
0bf6a5b xfs: convert the xfsaild threads to a workqueue
a7b339f xfs: introduce background inode reclaim work
89e4cb5 xfs: convert ENOSPC inode flushing to use new syncd workqueue
c6d09b6 xfs: introduce a xfssyncd workqueue
e828776 xfs: fix extent format buffer allocation size
from 89b3600ccfb01aed6873bc499442fc0bed00bbdd (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 a1b7ea5d58c53c13f082110e535d98bc4e8e5cfe
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Wed Mar 30 11:05:09 2011 +0000
xfs: use proper interfaces for on-stack plugging
Add proper blk_start_plug/blk_finish_plug pairs for the two places where
we issue buffer I/O, and remove the blk_flush_plug in xfs_buf_lock and
xfs_buf_iowait, given that context switches already flush the per-process
plugging lists.
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Signed-off-by: Alex Elder <aelder@xxxxxxx>
commit 957935dcd8e11d6f789b4ed769b376040e15565b
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Sat Apr 2 18:13:40 2011 +0000
xfs: fix xfs_debug warnings
For a CONFIG_XFS_DEBUG=n build gcc complains about statements with no
effect in xfs_debug:
fs/xfs/quota/xfs_qm_syscalls.c: In function 'xfs_qm_scall_trunc_qfiles':
fs/xfs/quota/xfs_qm_syscalls.c:291:3: warning: statement with no effect
The reason for that is that the various new xfs message functions have a
return value which is never used, and in case of the non-debug build
xfs_debug the macro evaluates to a plain 0 which produces the above
warnings. This can be fixed by turning xfs_debug into an inline function
instead of a macro, but in addition to that I've also changed all the
message helpers to return void as we never use their return values.
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>
Signed-off-by: Alex Elder <aelder@xxxxxxx>
commit ecb697c16c1718ae97bb73ce41a5d5ac2aed29ec
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Mon Apr 4 12:55:44 2011 +0000
xfs: fix variable set but not used warnings
GCC 4.6 now warnings about variables set but not used. Fix the trivially
fixable warnings of this sort.
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Signed-off-by: Alex Elder <aelder@xxxxxxx>
commit da8a1a4a4dfc1ead12c343b992fc8300a22d33d0
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: convert log tail checking to a warning
On the Power platform, the log tail debug checks fire excessively
causing the system to panic early in testing. The debug checks are
known to be racy, though on x86_64 there is no evidence that they
trigger at all.
We want to keep the checks active on debug systems to alert us to
problems with log space accounting, but we need to reduce the impact
of a racy check on testing on the Power platform.
As a result, convert the ASSERT conditions to warnings, and
allow them to fire only once per filesystem mount. This will prevent
false positives from interfering with testing, whilst still
providing us with the indication that they may be a problem with log
space accounting should that occur.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
commit be65b18a10e62321c5ba09a1dc0f70babeb0eba1
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: catch bad block numbers freeing extents.
A fuzzed filesystem crashed a kernel when freeing an extent with a
block number beyond the end of the filesystem. Convert all the debug
asserts in xfs_free_extent() to active checks so that we catch bad
extents and return that the filesytsem is corrupted rather than
crashing.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
commit fd074841cfe01b006465fb9388091012585e8dfb
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: push the AIL from memory reclaim and periodic sync
When we are short on memory, we want to expedite the cleaning of
dirty objects. Hence when we run short on memory, we need to kick
the AIL flushing into action to clean as many dirty objects as
quickly as possible. To implement this, sample the lsn of the log
item at the head of the AIL and use that as the push target for the
AIL flush.
Further, we keep items in the AIL that are dirty that are not
tracked any other way, so we can get objects sitting in the AIL that
don't get written back until the AIL is pushed. Hence to get the
filesystem to the idle state, we might need to push the AIL to flush
out any remaining dirty objects sitting in the AIL. This requires
the same push mechanism as the reclaim push.
This patch also renames xfs_trans_ail_tail() to xfs_ail_min_lsn() to
match the new xfs_ail_max_lsn() function introduced in this patch.
Similarly for xfs_trans_ail_push -> xfs_ail_push.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
commit cd4a3c503c185f5f0a20f04f90da0a6966dd03bd
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: clean up code layout in xfs_trans_ail.c
This patch rearranges the location of functions in xfs_trans_ail.c
to remove the need for forward declarations of those functions in
preparation for adding new functions without the need for forward
declarations.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
commit 0bf6a5bd4b55b466964ead6fa566d8f346a828ee
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: convert the xfsaild threads to a workqueue
Similar to the xfssyncd, the per-filesystem xfsaild threads can be
converted to a global workqueue and run periodically by delayed
works. This makes sense for the AIL pushing because it uses
variable timeouts depending on the work that needs to be done.
By removing the xfsaild, we simplify the AIL pushing code and
remove the need to spread the code to implement the threading
and pushing across multiple files.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
commit a7b339f1b8698667eada006e717cdb4523be2ed5
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: introduce background inode reclaim work
Background inode reclaim needs to run more frequently that the XFS
syncd work is run as 30s is too long between optimal reclaim runs.
Add a new periodic work item to the xfs syncd workqueue to run a
fast, non-blocking inode reclaim scan.
Background inode reclaim is kicked by the act of marking inodes for
reclaim. When an AG is first marked as having reclaimable inodes,
the background reclaim work is kicked. It will continue to run
periodically untill it detects that there are no more reclaimable
inodes. It will be kicked again when the first inode is queued for
reclaim.
To ensure shrinker based inode reclaim throttles to the inode
cleaning and reclaim rate but still reclaim inodes efficiently, make it
kick the
background inode reclaim so that when we are low on memory we are
trying to reclaim inodes as efficiently as possible. This kick shoul
d not be necessary, but it will protect against failures to kick the
background reclaim when inodes are first dirtied.
To provide the rate throttling, make the shrinker pass do
synchronous inode reclaim so that it blocks on inodes under IO. This
means that the shrinker will reclaim inodes rather than just
skipping over them, but it does not adversely affect the rate of
reclaim because most dirty inodes are already under IO due to the
background reclaim work the shrinker kicked.
These two modifications solve one of the two OOM killer invocations
Chris Mason reported recently when running a stress testing script.
The particular workload trigger for the OOM killer invocation is
where there are more threads than CPUs all unlinking files in an
extremely memory constrained environment. Unlike other solutions,
this one does not have a performance impact on performance when
memory is not constrained or the number of concurrent threads
operating is <= to the number of CPUs.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
commit 89e4cb550a492cfca038a555fcc1bdac58822ec3
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: convert ENOSPC inode flushing to use new syncd workqueue
On of the problems with the current inode flush at ENOSPC is that we
queue a flush per ENOSPC event, regardless of how many are already
queued. Thi can result in hundreds of queued flushes, most of
which simply burn CPU scanned and do no real work. This simply slows
down allocation at ENOSPC.
We really only need one active flush at a time, and we can easily
implement that via the new xfs_syncd_wq. All we need to do is queue
a flush if one is not already active, then block waiting for the
currently active flush to complete. The result is that we only ever
have a single ENOSPC inode flush active at a time and this greatly
reduces the overhead of ENOSPC processing.
On my 2p test machine, this results in tests exercising ENOSPC
conditions running significantly faster - 042 halves execution time,
083 drops from 60s to 5s, etc - while not introducing test
regressions.
This allows us to remove the old xfssyncd threads and infrastructure
as they are no longer used.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
commit c6d09b666de11eb272326a6eb6cd3246da571014
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: introduce a xfssyncd workqueue
All of the work xfssyncd does is background functionality. There is
no need for a thread per filesystem to do this work - it can al be
managed by a global workqueue now they manage concurrency
effectively.
Introduce a new gglobal xfssyncd workqueue, and convert the periodic
work to use this new functionality. To do this, use a delayed work
construct to schedule the next running of the periodic sync work
for the filesystem. When the sync work is complete, queue a new
delayed work for the next running of the sync work.
For laptop mode, we wait on completion for the sync works, so ensure
that the sync work queuing interface can flush and wait for work to
complete to enable the work queue infrastructure to replace the
current sequence number and wakeup that is used.
Because the sync work does non-trivial amounts of work, mark the
new work queue as CPU intensive.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
commit e828776a8abe6b9bae7ed9638710bff7642c568a
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date: Fri Apr 8 12:45:07 2011 +1000
xfs: fix extent format buffer allocation size
When formatting an inode item, we have to allocate a separate buffer
to hold extents when there are delayed allocation extents on the
inode and it is in extent format. The allocation size is derived
from the in-core data fork representation, which accounts for
delayed allocation extents, while the on-disk representation does
not contain any delalloc extents.
As a result of this mismatch, the allocated buffer can be far larger
than needed to hold the real extent list which, due to the fact the
inode is in extent format, is limited to the size of the literal
area of the inode. However, we can have thousands of delalloc
extents, resulting in an allocation size orders of magnitude larger
than is needed to hold all the real extents.
Fix this by limiting the size of the buffer being allocated to the
size of the literal area of the inodes in the filesystem (i.e. the
maximum size an inode fork can grow to).
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Reviewed-by: Alex Elder <aelder@xxxxxxx>
-----------------------------------------------------------------------
Summary of changes:
fs/xfs/linux-2.6/xfs_buf.c | 22 +--
fs/xfs/linux-2.6/xfs_message.c | 27 +--
fs/xfs/linux-2.6/xfs_message.h | 24 ++-
fs/xfs/linux-2.6/xfs_super.c | 129 +++++--------
fs/xfs/linux-2.6/xfs_sync.c | 228 +++++++++++-----------
fs/xfs/linux-2.6/xfs_sync.h | 2 +
fs/xfs/quota/xfs_qm.c | 7 -
fs/xfs/quota/xfs_qm.h | 5 -
fs/xfs/quota/xfs_qm_syscalls.c | 2 -
fs/xfs/xfs_alloc.c | 30 +++-
fs/xfs/xfs_inode_item.c | 67 ++++---
fs/xfs/xfs_itable.c | 2 -
fs/xfs/xfs_log.c | 38 +++-
fs/xfs/xfs_log_priv.h | 1 +
fs/xfs/xfs_mount.h | 9 +-
fs/xfs/xfs_trans_ail.c | 421 ++++++++++++++++++++++------------------
fs/xfs/xfs_trans_priv.h | 22 ++-
17 files changed, 531 insertions(+), 505 deletions(-)
hooks/post-receive
--
XFS development tree
|