diff options
author | Dave Chinner <dchinner@redhat.com> | 2012-10-05 03:06:58 +0200 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2012-10-19 00:41:56 +0200 |
commit | 2455881c0b52f87be539c4c7deab1afff4d8a560 (patch) | |
tree | ef2ed6c1f0f10727c929838992d89d54bb821993 /fs/xfs/xfs_alloc.h | |
parent | xfs: zero allocation_args on the kernel stack (diff) | |
download | linux-2455881c0b52f87be539c4c7deab1afff4d8a560.tar.xz linux-2455881c0b52f87be539c4c7deab1afff4d8a560.zip |
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@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_alloc.h')
-rw-r--r-- | fs/xfs/xfs_alloc.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/xfs/xfs_alloc.h b/fs/xfs/xfs_alloc.h index 93be4a667ca1..ef7d4885dc2d 100644 --- a/fs/xfs/xfs_alloc.h +++ b/fs/xfs/xfs_alloc.h @@ -123,6 +123,7 @@ typedef struct xfs_alloc_arg { struct completion *done; struct work_struct work; int result; + char stack_switch; } xfs_alloc_arg_t; /* |