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

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

 



On Mon, Feb 24, 2020 at 1:41 PM Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>
> 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)?

Yes, I certainly did :)
And no, I did not test on a 32bit kernel...

Thanks,
Amir.



[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