|
@@ -19,6 +19,7 @@
|
|
|
#include <linux/syscalls.h>
|
|
|
#include <linux/file.h>
|
|
|
#include <linux/mm_inline.h>
|
|
|
+#include <linux/blk-cgroup.h>
|
|
|
|
|
|
#include "internal.h"
|
|
|
|
|
@@ -505,6 +506,9 @@ void page_cache_sync_readahead(struct address_space *mapping,
|
|
|
if (!ra->ra_pages)
|
|
|
return;
|
|
|
|
|
|
+ if (blk_cgroup_congested())
|
|
|
+ return;
|
|
|
+
|
|
|
/* be dumb */
|
|
|
if (filp && (filp->f_mode & FMODE_RANDOM)) {
|
|
|
force_page_cache_readahead(mapping, filp, offset, req_size);
|
|
@@ -555,6 +559,9 @@ page_cache_async_readahead(struct address_space *mapping,
|
|
|
if (inode_read_congested(mapping->host))
|
|
|
return;
|
|
|
|
|
|
+ if (blk_cgroup_congested())
|
|
|
+ return;
|
|
|
+
|
|
|
/* do read-ahead */
|
|
|
ondemand_readahead(mapping, ra, filp, true, offset, req_size);
|
|
|
}
|