diff options
author | Brian Foster <bfoster@redhat.com> | 2013-01-17 13:11:29 -0500 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2013-01-28 12:48:55 -0600 |
commit | d26978dd866dbb3b3a9690f3655a5e735055de89 (patch) | |
tree | f0757e20ef85bdf9f640c98965ceab422bb69340 /fs/xfs | |
parent | 1bee12b8c44d825fb45cd6a13e76c185ed6888b8 (diff) | |
download | op-kernel-dev-d26978dd866dbb3b3a9690f3655a5e735055de89.zip op-kernel-dev-d26978dd866dbb3b3a9690f3655a5e735055de89.tar.gz |
xfs: pull up stack_switch check into xfs_bmapi_write
The stack_switch check currently occurs in __xfs_bmapi_allocate,
which means the stack switch only occurs when xfs_bmapi_allocate()
is called in a loop. Pull the check up before the loop in
xfs_bmapi_write() such that the first iteration of the loop has
consistent behavior.
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/xfs_bmap.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 0e92d12..cdb2d33 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -4680,9 +4680,6 @@ __xfs_bmapi_allocate( return error; } - if (bma->flags & XFS_BMAPI_STACK_SWITCH) - bma->stack_switch = 1; - error = xfs_bmap_alloc(bma); if (error) return error; @@ -4956,6 +4953,9 @@ xfs_bmapi_write( bma.flist = flist; bma.firstblock = firstblock; + if (flags & XFS_BMAPI_STACK_SWITCH) + bma.stack_switch = 1; + while (bno < end && n < *nmap) { inhole = eof || bma.got.br_startoff > bno; wasdelay = !inhole && isnullstartblock(bma.got.br_startblock); |