Re: [PATCH V2] ovl: fix mount fail because the upper doesn't have space

From: Amir Goldstein
Date: Wed Jul 19 2023 - 05:09:17 EST


On Wed, Jul 19, 2023 at 11:54 AM Yunlong Xing <yunlong.xing@xxxxxxxxxx> wrote:
>
> The current ovlfs mount flow:
>
> ovl_fill_super
> |_ovl_get_workdir
> |_ovl_make_workdir
> |_ovl_check_rename_whiteout
>
> In ovl_check_rename_whiteout(), a new file is attempted to create.But if
> the upper doesn't have space to do this, it will return error -ENOSPC,
> causing the mount fail. It means that if the upper is full, the overlayfs
> cannot be mounted.It is not reasonable, so this patch will omit this error
> and continue mount flow.
>
> Fixes: cad218ab3320 ("ovl: check if upper fs supports RENAME_WHITEOUT")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Yunlong Xing <yunlong.xing@xxxxxxxxxx>
> ---
> changes of v2: Following Amir's suggestion, assuming it is not supported
> if the check fails because the upper does't have space
> ---

Reviewed-by: Amir Goldstein <amir73il@xxxxxxxxx>

> fs/overlayfs/super.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
> index 5b069f1a1e44..2b33c56fe4d7 100644
> --- a/fs/overlayfs/super.c
> +++ b/fs/overlayfs/super.c
> @@ -744,12 +744,13 @@ static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
>
> /* Check if upper/work fs supports RENAME_WHITEOUT */
> err = ovl_check_rename_whiteout(ofs);
> - if (err < 0)
> + if (err < 0 && err != -ENOSPC)
> goto out;
>
> - rename_whiteout = err;
> + rename_whiteout = err > 0;
> if (!rename_whiteout)
> - pr_warn("upper fs does not support RENAME_WHITEOUT.\n");
> + pr_warn("upper fs does not support RENAME_WHITEOUT (%i).\n,
> + err");
>
> /*
> * Check if upper/work fs supports (trusted|user).overlay.* xattr
> --
> 2.25.1
>