Commit 9e96fe6d authored by Brian Foster's avatar Brian Foster Committed by Ben Myers

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: default avatarBrian Foster <bfoster@redhat.com>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>
parent 667a9291
...@@ -4676,9 +4676,6 @@ __xfs_bmapi_allocate( ...@@ -4676,9 +4676,6 @@ __xfs_bmapi_allocate(
return error; return error;
} }
if (bma->flags & XFS_BMAPI_STACK_SWITCH)
bma->stack_switch = 1;
error = xfs_bmap_alloc(bma); error = xfs_bmap_alloc(bma);
if (error) if (error)
return error; return error;
...@@ -4952,6 +4949,9 @@ xfs_bmapi_write( ...@@ -4952,6 +4949,9 @@ xfs_bmapi_write(
bma.flist = flist; bma.flist = flist;
bma.firstblock = firstblock; bma.firstblock = firstblock;
if (flags & XFS_BMAPI_STACK_SWITCH)
bma.stack_switch = 1;
while (bno < end && n < *nmap) { while (bno < end && n < *nmap) {
inhole = eof || bma.got.br_startoff > bno; inhole = eof || bma.got.br_startoff > bno;
wasdelay = !inhole && isnullstartblock(bma.got.br_startblock); wasdelay = !inhole && isnullstartblock(bma.got.br_startblock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment