Re: [PATCH] mount.nfs: Fix the sloppy option processing

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

 



On Tue, Jul 20, 2021 at 5:27 PM Steve Dickson <steved@xxxxxxxxxx> wrote:
>
> The new mount API broke how the sloppy option is parsed.
> So the option processing needs to be moved up in
> the mount.nfs command.
>
> The option needs to be the first option in the string
> that is passed into the kernel with the -s mount(8)
> and/or the -o sloppy is used.
>
> Commit 92b664ef fixed the process of the -s flag
> and this version fixes the -o sloppy processing
> as well works when libmount-mount is and is not
> enabled plus cleans up the mount options passed
> to the kernel.
>
> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx>
> ---
>  utils/mount/nfs.man   |  7 +++++++
>  utils/mount/stropts.c | 14 +++++++++++---
>  2 files changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/utils/mount/nfs.man b/utils/mount/nfs.man
> index f98cb47d..f1b76936 100644
> --- a/utils/mount/nfs.man
> +++ b/utils/mount/nfs.man
> @@ -555,6 +555,13 @@ using the FS-Cache facility. See cachefilesd(8)
>  and <kernel_source>/Documentation/filesystems/caching
>  for detail on how to configure the FS-Cache facility.
>  Default value is nofsc.
> +.TP 1.5i
> +.B sloppy
> +The
> +.B sloppy
> +option is an alternative to specifying
> +.BR mount.nfs " -s " option.
> +
>  .SS "Options for NFS versions 2 and 3 only"
>  Use these options, along with the options in the above subsection,
>  for NFS versions 2 and 3 only.
> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
> index 82b054a5..fa67a66f 100644
> --- a/utils/mount/stropts.c
> +++ b/utils/mount/stropts.c
> @@ -339,11 +339,19 @@ static int nfs_verify_lock_option(struct mount_options *options)
>
>  static int nfs_insert_sloppy_option(struct mount_options *options)
>  {
> -       if (!sloppy || linux_version_code() < MAKE_VERSION(2, 6, 27))
> +       if (linux_version_code() < MAKE_VERSION(2, 6, 27))
>                 return 1;
>
> -       if (po_insert(options, "sloppy") == PO_FAILED)
> -               return 0;
> +       if (po_contains(options, "sloppy")) {
> +               po_remove_all(options, "sloppy");
> +               sloppy++;
> +       }
> +
> +       if (sloppy) {
> +               if (po_insert(options, "sloppy") == PO_FAILED)
> +                       return 0;
> +       }
> +
>         return 1;
>  }
>
> --
> 2.31.1
>

Looks good.

Tested with 1-liner, failed before this patch.

# FAIL=0; for o in blah,vers=4.1,sec=sys,sloppy
blah,vers=4.1,sloppy,sec=sys sloppy,blah,vers=4.1,sec=sys
vers=4.1,blah,sec=sys,sloppy vers=4.1,blah,sloppy,sec=sys
vers=4.1,sloppy,blah,sec=sys sloppy,vers=4.1,blah,sec=sys
sloppy,vers=4.1,sec=sys,blah; do ./utils/mount/mount.nfs -o $o
127.0.0.1:/exports /mnt/test; if [ $? -ne 0 ]; then FAIL=1; echo
ERROR: on options $o; break; fi; umount /mnt/test; done; if [ $FAIL
-eq 0 ]; then echo SUCCESS on kernel $(uname -r) nfs-utils at $(git
log --oneline | head -1); fi
mount.nfs: an incorrect mount option was specified
ERROR: on options blah,vers=4.1,sec=sys,sloppy

# FAIL=0; for o in blah,vers=4.1,sec=sys,sloppy
blah,vers=4.1,sloppy,sec=sys sloppy,blah,vers=4.1,sec=sys
vers=4.1,blah,sec=sys,sloppy vers=4.1,blah,sloppy,sec=sys
vers=4.1,sloppy,blah,sec=sys sloppy,vers=4.1,blah,sec=sys
sloppy,vers=4.1,sec=sys,blah; do ./utils/mount/mount.nfs -o $o
127.0.0.1:/exports /mnt/test; if [ $? -ne 0 ]; then FAIL=1; echo
ERROR: on options $o; break; fi; umount /mnt/test; done; if [ $FAIL
-eq 0 ]; then echo SUCCESS on kernel $(uname -r) nfs-utils at $(git
log --oneline | head -1); fi
SUCCESS on kernel 5.14.0-rc2 nfs-utils at d3e53193c6d6 mount.nfs: Fix
the sloppy option processing


Reviewed-and-tested-by: Dave Wysochanski <dwysocha@xxxxxxxxxx>




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux