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
