Whamcloud - gitweb
LU-15244 llite: set ra_pages of backing_dev_info with 0 12/45712/4
authorQian Yingjin <qian@ddn.com>
Thu, 2 Dec 2021 13:16:18 +0000 (08:16 -0500)
committerOleg Drokin <green@whamcloud.com>
Thu, 23 Dec 2021 07:20:25 +0000 (07:20 +0000)
The latest RHEL8.5 kernel sets initial @ra_pages of
backing_dev_info with VM_READAHEAD_PAGES:
struct backing_dev_info *bdi_alloc(int node_id)
{
...
bdi->ra_pages = VM_READAHEAD_PAGES;
bdi->io_pages = VM_READAHEAD_PAGES;
...
}

This will cause that @ra_pages of file readahead state is set
with @bdi->ra_pages, make the readahead is out of Lustre control
and trigger the readahead logic in Linux kernel wrongly. And it
results in the failure sanity 101j.

In this patch, we force to set @ra_pages of backing_dev_info with
0 after setup the backing device info. By this way, it disables
kernel readahead in the super block.

This patch also cleanups the unnecessary setting of @ra_pages in
llite "file.c" and "vvp_io.c".

Signed-off-by: Qian Yingjin <qian@ddn.com>
Change-Id: If6468109620269c1e76abe3a1cd73c3b40a417a8
Reviewed-on: https://review.whamcloud.com/45712
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/llite/file.c
lustre/llite/llite_lib.c
lustre/llite/vvp_io.c

index b5e11ca..9ec9e63 100644 (file)
@@ -764,8 +764,6 @@ static int ll_local_open(struct file *file, struct lookup_intent *it,
        file->private_data = fd;
        ll_readahead_init(inode, &fd->fd_ras);
        fd->fd_omode = it->it_flags & (FMODE_READ | FMODE_WRITE | FMODE_EXEC);
-       /* turn off the kernel's read-ahead */
-       file->f_ra.ra_pages = 0;
 
        RETURN(0);
 }
index e818e1e..7a6d4a7 100644 (file)
@@ -1279,6 +1279,9 @@ int ll_fill_super(struct super_block *sb)
        if (err)
                GOTO(out_free_cfg, err);
 
+       /* disable kernel readahead */
+       sb->s_bdi->ra_pages = 0;
+
        /* Call ll_debugfs_register_super() before lustre_process_log()
         * so that "llite.*.*" params can be processed correctly.
         */
index 7530254..cff5cba 100644 (file)
@@ -852,9 +852,6 @@ static int vvp_io_read_start(const struct lu_env *env,
                         "Read ino %lu, %zu bytes, offset %lld, size %llu\n",
                         inode->i_ino, cnt, pos, i_size_read(inode));
 
-       /* turn off the kernel's read-ahead */
-       vio->vui_fd->fd_file->f_ra.ra_pages = 0;
-
        /* initialize read-ahead window once per syscall */
        if (!vio->vui_ra_valid) {
                vio->vui_ra_valid = true;