NetBSD-Bugs archive

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

Re: bin/15262



The following reply was made to PR bin/15262; it has been noted by GNATS.

From: Jacob Pipkin <jacob.pipkin%icloud.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: bin/15262
Date: Mon, 2 Mar 2026 17:18:56 -0600

 This should just be a matter of skipping the FLG_UPDATE code path with
 -u and just setting the "update" option directly. Here are my test
 results:
 --
 # grep noatime /etc/fstab
 NAME=70c33570-9733-3a44-b5b8-7351a1b600f0               /       ffs
 rw,noatime               1 1
 # mount | grep ' / '
 /dev/dk1 on / type ffs (local)
 # ./mount -u /
 # mount | grep ' / '
 /dev/dk1 on / type ffs (noatime, local)
 # ./mount -o update /
 # mount | grep ' / '
 /dev/dk1 on / type ffs (noatime, local)
 --
 
 Shiny. Here's the patch:
 
 Index: mount.c
 ===================================================================
 RCS file: /cvsroot/src/sbin/mount/mount.c,v
 retrieving revision 1.108
 diff -u -r1.108 mount.c
 --- mount.c 1 Jul 2025 17:55:05 -0000   1.108
 +++ mount.c 2 Mar 2026 23:00:01 -0000
 @@ -150,7 +150,7 @@
             vfstype = optarg;
             break;
         case 'u':
 -           init_flags |= FLG_UPDATE;
 +           catopt(&options, "update");
             break;
         case 'v':
             verbose++;
 @@ -229,60 +229,35 @@
          */
         canonical_path = realpath(*argv, canonical_path_buf);
  
 -       if (init_flags & FLG_UPDATE) {
 -           /*
 -            * Try looking up the canonical path first,
 -            * then try exactly what the user entered.
 -            */
 -           if ((canonical_path == NULL ||
 -               (mntbuf = getmntpt(canonical_path)) == NULL) &&
 -               (mntbuf = getmntpt(*argv)) == NULL) {
 -out:
 -               errx(EXIT_FAILURE,
 -                   "Unknown special file or file system `%s'",
 -                   *argv);
 -           }
 -           mntfromname = mntbuf->f_mntfromname;
 -           if ((fs = getfsfile(mntbuf->f_mntonname)) != NULL) {
 -               if (strcmp(fs->fs_spec, "from_mount") != 0)
 -                   mntfromname = fs->fs_spec;
 -               /* ignore the fstab file options.  */
 -               fs->fs_mntops = NULL;
 -           }
 -           mntonname  = mntbuf->f_mntonname;
 -           fstypename = mntbuf->f_fstypename;
 -           mountopts  = NULL;
 -       } else {
 -           /*
 -            * Try looking up the canonical path first,
 -            * then try exactly what the user entered.
 -            */
 -           if (canonical_path == NULL ||
 -               ((fs = getfsfile(canonical_path)) == NULL &&
 -                (fs = getfsspec(canonical_path)) == NULL))
 -           {
 -               if ((fs = getfsfile(*argv)) == NULL &&
 -                   (fs = getfsspec(*argv)) == NULL) {
 -                   goto out;
 -               }
 +       /*
 +        * Try looking up the canonical path first,
 +        * then try exactly what the user entered.
 +        */
 +       if (canonical_path == NULL ||
 +           ((fs = getfsfile(canonical_path)) == NULL &&
 +            (fs = getfsspec(canonical_path)) == NULL))
 +       {
 +           if ((fs = getfsfile(*argv)) == NULL &&
 +               (fs = getfsspec(*argv)) == NULL) {
 +               goto out;
             }
 -           if (BADTYPE(fs->fs_type))
 -               errx(EXIT_FAILURE,
 -                   "Unknown file system type for `%s'",
 -                   *argv);
 -           if (strcmp(fs->fs_spec, "from_mount") == 0) {
 -               if ((canonical_path == NULL ||
 -                   (mntbuf = getmntpt(canonical_path))
 -                    == NULL) &&
 -                   (mntbuf = getmntpt(*argv)) == NULL)
 -                   goto out;
 -               mntfromname = mntbuf->f_mntfromname;
 -           } else
 -               mntfromname = fs->fs_spec;
 -           mntonname   = fs->fs_file;
 -           fstypename  = fs->fs_vfstype;
 -           mountopts   = fs->fs_mntops;
         }
 +       if (BADTYPE(fs->fs_type))
 +           errx(EXIT_FAILURE,
 +               "Unknown file system type for `%s'",
 +               *argv);
 +       if (strcmp(fs->fs_spec, "from_mount") == 0) {
 +           if ((canonical_path == NULL ||
 +               (mntbuf = getmntpt(canonical_path))
 +                == NULL) &&
 +               (mntbuf = getmntpt(*argv)) == NULL)
 +               goto out;
 +           mntfromname = mntbuf->f_mntfromname;
 +       } else
 +           mntfromname = fs->fs_spec;
 +       mntonname   = fs->fs_file;
 +       fstypename  = fs->fs_vfstype;
 +       mountopts   = fs->fs_mntops;
         mntfromname = getfsspecname(buf, sizeof(buf), mntfromname);
         if (mntfromname == NULL)
             err(EXIT_FAILURE, "%s", buf);
 


Home | Main Index | Thread Index | Old Index