Re: [PATCH v2 1/5] ovl: fix some xino configurations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Feb 21, 2020 at 3:34 PM Amir Goldstein <amir73il@xxxxxxxxx> wrote:
>
> Fix up two bugs in the coversion to xino_mode:
> 1. xino=off does not alway end up in disabled mode

s/alway/always/

> 2. xino=auto on 32bit arch should end up in disabled mode
>
> Take a proactive approach to disabling xino on 32bit kernel:
> 1. Disable XINO_AUTO config during build time
> 2. Disable xino with a warning on mount time
>
> As a by product, xino=on on 32bit arch also ends up in disabled mode.
> We never intended to enable xino on 32bit arch and this will make the
> rest of the logic simpler.
>
> Fixes: 0f831ec85eda ("ovl: simplify ovl_same_sb() helper")
> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
> ---
>  fs/overlayfs/Kconfig | 1 +
>  fs/overlayfs/super.c | 9 ++++++++-
>  2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/fs/overlayfs/Kconfig b/fs/overlayfs/Kconfig
> index 444e2da4f60e..714c14c47ca5 100644
> --- a/fs/overlayfs/Kconfig
> +++ b/fs/overlayfs/Kconfig
> @@ -93,6 +93,7 @@ config OVERLAY_FS_XINO_AUTO
>         bool "Overlayfs: auto enable inode number mapping"
>         default n
>         depends on OVERLAY_FS
> +       depends on 64BIT
>         help
>           If this config option is enabled then overlay filesystems will use
>           unused high bits in undelying filesystem inode numbers to map all
> diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
> index 6dc45bc7d664..f4c0ad69f9a6 100644
> --- a/fs/overlayfs/super.c
> +++ b/fs/overlayfs/super.c
> @@ -1489,6 +1489,8 @@ static int ovl_get_layers(struct super_block *sb, struct ovl_fs *ofs,
>                 if (ofs->config.xino == OVL_XINO_ON)
>                         pr_info("\"xino=on\" is useless with all layers on same fs, ignore.\n");
>                 ofs->xino_mode = 0;
> +       } else if (ofs->config.xino == OVL_XINO_OFF) {
> +               ofs->xino_mode = -1;
>         } else if (ofs->config.xino == OVL_XINO_ON && ofs->xino_mode < 0) {
>                 /*
>                  * This is a roundup of number of bits needed for encoding
> @@ -1735,8 +1737,13 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
>         sb->s_stack_depth = 0;
>         sb->s_maxbytes = MAX_LFS_FILESIZE;
>         /* Assume underlaying fs uses 32bit inodes unless proven otherwise */
> -       if (ofs->config.xino != OVL_XINO_OFF)
> +       if (ofs->config.xino != OVL_XINO_OFF) {
>                 ofs->xino_mode = BITS_PER_LONG - 32;
> +               if (!ofs->config.xino) {

Did you mean (!ofs->xino_mode)?


Thanks,
Miklos



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux