Currently, we only throttle on reading/writing page cache. As a result,
if a user runs e.g. `find` inside a container, it will quickly consume
all available quota, so that a following attempt to read/write a file
will hang for an unacceptably long period of time in order to compensate
for the burst.

Fix this by adding a VIRTINFO_IO_PREPARE call to ext4_read_dirblock.

Reported-by: Andrew Perepechko <[email protected]>
Signed-off-by: Vladimir Davydov <[email protected]>
---
 fs/ext4/namei.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index dff134a6fac9..0adc6df24120 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -34,6 +34,7 @@
 #include <linux/quotaops.h>
 #include <linux/buffer_head.h>
 #include <linux/bio.h>
+#include <linux/virtinfo.h>
 #include "ext4.h"
 #include "ext4_jbd2.h"
 
@@ -96,6 +97,8 @@ static struct buffer_head *__ext4_read_dirblock(struct inode 
*inode,
        struct ext4_dir_entry *dirent;
        int err = 0, is_dx_block = 0;
 
+       virtinfo_notifier_call(VITYPE_IO, VIRTINFO_IO_PREPARE, NULL);
+
        bh = ext4_bread(NULL, inode, block, 0, &err);
        if (!bh) {
                if (err == 0) {
-- 
2.1.4

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to