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>
This commit is contained in:
parent
667a9291c5
commit
9e96fe6df4
|
@ -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(
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue