[Devel] [PATCH rh7] fs: ext4: allow to throttle due to iolimit while reading directory blocks
Dmitry Monakhov
dmonakhov at openvz.org
Tue Feb 9 06:42:51 PST 2016
Vladimir Davydov <vdavydov at virtuozzo.com> writes:
> 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.
ACK.
>
> Reported-by: Andrew Perepechko <panda at cloudlinux.com>
> Signed-off-by: Vladimir Davydov <vdavydov at virtuozzo.com>
> ---
> 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
More information about the Devel
mailing list