2021-11-05 08:57:35

by Sjoerd Simons

[permalink] [raw]
Subject: [PATCH] hostfs: Fix writeback of dirty pages

Hostfs was not setting up the backing device information, which means it
uses the noop bdi. The noop bdi does not have the writeback capability
enabled, which in turns means dirty pages never got written back to
storage.

In other words programs using mmap to write to files on hostfs never
actually got their data written out...

Fix this by simply setting up the bdi with default settings as all the
required code for writeback is already in place.

Signed-off-by: Sjoerd Simons <[email protected]>

---

fs/hostfs/hostfs_kern.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index d5c9d886cd9f..ef481c3d9019 100644
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -924,6 +924,9 @@ static int hostfs_fill_sb_common(struct super_block *sb, void *d, int silent)
sb->s_op = &hostfs_sbops;
sb->s_d_op = &simple_dentry_operations;
sb->s_maxbytes = MAX_LFS_FILESIZE;
+ err = super_setup_bdi(sb);
+ if (err)
+ goto out;

/* NULL is printed as '(null)' by printf(): avoid that. */
if (req_root == NULL)
--
2.33.1


2021-11-11 13:26:27

by Christopher Obbard

[permalink] [raw]
Subject: Re: [PATCH] hostfs: Fix writeback of dirty pages

Hi Sjoerd,

On 05/11/2021 08:10, Sjoerd Simons wrote:
> Hostfs was not setting up the backing device information, which means it
> uses the noop bdi. The noop bdi does not have the writeback capability
> enabled, which in turns means dirty pages never got written back to
> storage.
>
> In other words programs using mmap to write to files on hostfs never
> actually got their data written out...
>
> Fix this by simply setting up the bdi with default settings as all the
> required code for writeback is already in place.
>
> Signed-off-by: Sjoerd Simons <[email protected]>

Cc: [email protected]
Reviewed-by: Christopher Obbard <[email protected]>

...replying mainly as I wonder if adding the stable tag in a reply will
make the patch appear in stable (obviously once it is in mainline) ? :-)


>
> ---
>
> fs/hostfs/hostfs_kern.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
> index d5c9d886cd9f..ef481c3d9019 100644
> --- a/fs/hostfs/hostfs_kern.c
> +++ b/fs/hostfs/hostfs_kern.c
> @@ -924,6 +924,9 @@ static int hostfs_fill_sb_common(struct super_block *sb, void *d, int silent)
> sb->s_op = &hostfs_sbops;
> sb->s_d_op = &simple_dentry_operations;
> sb->s_maxbytes = MAX_LFS_FILESIZE;
> + err = super_setup_bdi(sb);
> + if (err)
> + goto out;
>
> /* NULL is printed as '(null)' by printf(): avoid that. */
> if (req_root == NULL)
>

2021-11-11 17:10:15

by Ritesh Raj Sarraf

[permalink] [raw]
Subject: Re: [PATCH] hostfs: Fix writeback of dirty pages

On Fri, 2021-11-05 at 09:10 +0100, Sjoerd Simons wrote:
> Hostfs was not setting up the backing device information, which means
> it
> uses the noop bdi. The noop bdi does not have the writeback
> capability
> enabled, which in turns means  dirty pages never got written back to
> storage.
>
> In other words programs using mmap to write to files on  hostfs never
> actually got their data written out...
>
> Fix this by simply setting up the bdi with default settings as all
> the
> required code for writeback is already in place.
>
> Signed-off-by: Sjoerd Simons <[email protected]>
>

Tested-by: Ritesh Raj Sarraf <[email protected]>

> ---
>
>  fs/hostfs/hostfs_kern.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
> index d5c9d886cd9f..ef481c3d9019 100644
> --- a/fs/hostfs/hostfs_kern.c
> +++ b/fs/hostfs/hostfs_kern.c
> @@ -924,6 +924,9 @@ static int hostfs_fill_sb_common(struct
> super_block *sb, void *d, int silent)
>         sb->s_op = &hostfs_sbops;
>         sb->s_d_op = &simple_dentry_operations;
>         sb->s_maxbytes = MAX_LFS_FILESIZE;
> +       err = super_setup_bdi(sb);
> +       if (err)
> +               goto out;
>  
>         /* NULL is printed as '(null)' by printf(): avoid that. */
>         if (req_root == NULL)

--
Ritesh Raj Sarraf
Collabora


Attachments:
signature.asc (833.00 B)
This is a digitally signed message part

2021-11-11 18:57:34

by Anton Ivanov

[permalink] [raw]
Subject: Re: [PATCH] hostfs: Fix writeback of dirty pages

On 05/11/2021 08:10, Sjoerd Simons wrote:
> Hostfs was not setting up the backing device information, which means it
> uses the noop bdi. The noop bdi does not have the writeback capability
> enabled, which in turns means dirty pages never got written back to
> storage.
>
> In other words programs using mmap to write to files on hostfs never
> actually got their data written out...
>
> Fix this by simply setting up the bdi with default settings as all the
> required code for writeback is already in place.
>
> Signed-off-by: Sjoerd Simons <[email protected]>
>
> ---
>
> fs/hostfs/hostfs_kern.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
> index d5c9d886cd9f..ef481c3d9019 100644
> --- a/fs/hostfs/hostfs_kern.c
> +++ b/fs/hostfs/hostfs_kern.c
> @@ -924,6 +924,9 @@ static int hostfs_fill_sb_common(struct super_block *sb, void *d, int silent)
> sb->s_op = &hostfs_sbops;
> sb->s_d_op = &simple_dentry_operations;
> sb->s_maxbytes = MAX_LFS_FILESIZE;
> + err = super_setup_bdi(sb);
> + if (err)
> + goto out;
>
> /* NULL is printed as '(null)' by printf(): avoid that. */
> if (req_root == NULL)
>

Acked-By: Anton Ivanov <[email protected]>

--
Anton R. Ivanov
Cambridgegreys Limited. Registered in England. Company Number 10273661
https://www.cambridgegreys.com/