diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_aops.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 089eaca860b4..34640d6dbdcb 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
@@ -1333,6 +1333,21 @@ xfs_vm_writepage( | |||
1333 | trace_xfs_writepage(inode, page, 0); | 1333 | trace_xfs_writepage(inode, page, 0); |
1334 | 1334 | ||
1335 | /* | 1335 | /* |
1336 | * Refuse to write the page out if we are called from reclaim context. | ||
1337 | * | ||
1338 | * This is primarily to avoid stack overflows when called from deep | ||
1339 | * used stacks in random callers for direct reclaim, but disabling | ||
1340 | * reclaim for kswap is a nice side-effect as kswapd causes rather | ||
1341 | * suboptimal I/O patters, too. | ||
1342 | * | ||
1343 | * This should really be done by the core VM, but until that happens | ||
1344 | * filesystems like XFS, btrfs and ext4 have to take care of this | ||
1345 | * by themselves. | ||
1346 | */ | ||
1347 | if (current->flags & PF_MEMALLOC) | ||
1348 | goto out_fail; | ||
1349 | |||
1350 | /* | ||
1336 | * We need a transaction if: | 1351 | * We need a transaction if: |
1337 | * 1. There are delalloc buffers on the page | 1352 | * 1. There are delalloc buffers on the page |
1338 | * 2. The page is uptodate and we have unmapped buffers | 1353 | * 2. The page is uptodate and we have unmapped buffers |
@@ -1366,14 +1381,6 @@ xfs_vm_writepage( | |||
1366 | if (!page_has_buffers(page)) | 1381 | if (!page_has_buffers(page)) |
1367 | create_empty_buffers(page, 1 << inode->i_blkbits, 0); | 1382 | create_empty_buffers(page, 1 << inode->i_blkbits, 0); |
1368 | 1383 | ||
1369 | |||
1370 | /* | ||
1371 | * VM calculation for nr_to_write seems off. Bump it way | ||
1372 | * up, this gets simple streaming writes zippy again. | ||
1373 | * To be reviewed again after Jens' writeback changes. | ||
1374 | */ | ||
1375 | wbc->nr_to_write *= 4; | ||
1376 | |||
1377 | /* | 1384 | /* |
1378 | * Convert delayed allocate, unwritten or unmapped space | 1385 | * Convert delayed allocate, unwritten or unmapped space |
1379 | * to real space and flush out to disk. | 1386 | * to real space and flush out to disk. |