diff options
Diffstat (limited to 'fs/buffer.c')
-rw-r--r-- | fs/buffer.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index 71358499bc57..9b5434a80479 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
@@ -360,16 +360,18 @@ void invalidate_bdev(struct block_device *bdev) | |||
360 | */ | 360 | */ |
361 | static void free_more_memory(void) | 361 | static void free_more_memory(void) |
362 | { | 362 | { |
363 | struct zonelist *zonelist; | 363 | struct zone **zones; |
364 | int nid; | 364 | int nid; |
365 | 365 | ||
366 | wakeup_pdflush(1024); | 366 | wakeup_pdflush(1024); |
367 | yield(); | 367 | yield(); |
368 | 368 | ||
369 | for_each_online_node(nid) { | 369 | for_each_online_node(nid) { |
370 | zonelist = node_zonelist(nid, GFP_NOFS); | 370 | zones = first_zones_zonelist(node_zonelist(nid, GFP_NOFS), |
371 | if (zonelist->zones[0]) | 371 | gfp_zone(GFP_NOFS)); |
372 | try_to_free_pages(zonelist, 0, GFP_NOFS); | 372 | if (*zones) |
373 | try_to_free_pages(node_zonelist(nid, GFP_NOFS), 0, | ||
374 | GFP_NOFS); | ||
373 | } | 375 | } |
374 | } | 376 | } |
375 | 377 | ||