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 e04426b xfs: move allocation stack switch up to xfs_bmapi_allocate 2455881 xfs: introduce XFS_BMAPI_STACK_SWITCH a004168 xfs: zero allocation_args on the kernel stack from d35e88faa3b0fc2cea35c3b2dca358b5cd09b45f (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 e04426b9202bccd4cfcbc70b2fa2aeca1c86d8f5 Author: Dave Chinner <dchinner@xxxxxxxxxx> Date: Fri Oct 5 11:06:59 2012 +1000 xfs: move allocation stack switch up to xfs_bmapi_allocate Switching stacks are xfs_alloc_vextent can cause deadlocks when we run out of worker threads on the allocation workqueue. This can occur because xfs_bmap_btalloc can make multiple calls to xfs_alloc_vextent() and even if xfs_alloc_vextent() fails it can return with the AGF locked in the current allocation transaction. If we then need to make another allocation, and all the allocation worker contexts are exhausted because the are blocked waiting for the AGF lock, holder of the AGF cannot get it's xfs-alloc_vextent work completed to release the AGF. Hence allocation effectively deadlocks. To avoid this, move the stack switch one layer up to xfs_bmapi_allocate() so that all of the allocation attempts in a single switched stack transaction occur in a single worker context. This avoids the problem of an allocation being blocked waiting for a worker thread whilst holding the AGF. Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit 2455881c0b52f87be539c4c7deab1afff4d8a560 Author: Dave Chinner <dchinner@xxxxxxxxxx> Date: Fri Oct 5 11:06:58 2012 +1000 xfs: introduce XFS_BMAPI_STACK_SWITCH Certain allocation paths through xfs_bmapi_write() are in situations where we have limited stack available. These are almost always in the buffered IO writeback path when convertion delayed allocation extents to real extents. The current stack switch occurs for userdata allocations, which means we also do stack switches for preallocation, direct IO and unwritten extent conversion, even those these call chains have never been implicated in a stack overrun. Hence, let's target just the single stack overun offended for stack switches. To do that, introduce a XFS_BMAPI_STACK_SWITCH flag that the caller can pass xfs_bmapi_write() to indicate it should switch stacks if it needs to do allocation. Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Mark Tinguely <tinguely@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> commit a00416844b8f4b0106344bdfd90fe45a854b1d05 Author: Mark Tinguely <tinguely@xxxxxxx> Date: Thu Sep 20 13:16:45 2012 -0500 xfs: zero allocation_args on the kernel stack Zero the kernel stack space that makes up the xfs_alloc_arg structures. Signed-off-by: Mark Tinguely <tinguely@xxxxxxx> Reviewed-by: Ben Myers <bpm@xxxxxxx> Signed-off-by: Ben Myers <bpm@xxxxxxx> ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_alloc.c | 43 ++--------------------------------- fs/xfs/xfs_alloc.h | 3 --- fs/xfs/xfs_bmap.c | 63 +++++++++++++++++++++++++++++++++++++++++++-------- fs/xfs/xfs_bmap.h | 9 +++++++- fs/xfs/xfs_ialloc.c | 1 + fs/xfs/xfs_iomap.c | 4 +++- 6 files changed, 68 insertions(+), 55 deletions(-) hooks/post-receive -- XFS development tree _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs