|
@@ -502,16 +502,6 @@ void throttle_vm_writeout(gfp_t gfp_mask)
|
|
|
long background_thresh;
|
|
|
long dirty_thresh;
|
|
|
|
|
|
- if ((gfp_mask & (__GFP_FS|__GFP_IO)) != (__GFP_FS|__GFP_IO)) {
|
|
|
- /*
|
|
|
- * The caller might hold locks which can prevent IO completion
|
|
|
- * or progress in the filesystem. So we cannot just sit here
|
|
|
- * waiting for IO to complete.
|
|
|
- */
|
|
|
- congestion_wait(WRITE, HZ/10);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
for ( ; ; ) {
|
|
|
get_dirty_limits(&background_thresh, &dirty_thresh, NULL, NULL);
|
|
|
|
|
@@ -525,6 +515,14 @@ void throttle_vm_writeout(gfp_t gfp_mask)
|
|
|
global_page_state(NR_WRITEBACK) <= dirty_thresh)
|
|
|
break;
|
|
|
congestion_wait(WRITE, HZ/10);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * The caller might hold locks which can prevent IO completion
|
|
|
+ * or progress in the filesystem. So we cannot just sit here
|
|
|
+ * waiting for IO to complete.
|
|
|
+ */
|
|
|
+ if ((gfp_mask & (__GFP_FS|__GFP_IO)) != (__GFP_FS|__GFP_IO))
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|