commit-hurd
[Top][All Lists]
Advanced

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

[hurd] 01/01: patches/mount-bind.patch: Add bind option to our mount too


From: Samuel Thibault
Subject: [hurd] 01/01: patches/mount-bind.patch: Add bind option to our mount tool.
Date: Sun, 25 May 2014 14:31:12 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch master
in repository hurd.

commit 1cba06c7c1e8e6003d2251a6b697ba871d1578a5
Author: Samuel Thibault <address@hidden>
Date:   Sun May 25 14:28:17 2014 +0000

    patches/mount-bind.patch: Add bind option to our mount tool.
---
 debian/changelog                |   3 ++
 debian/patches/mount-bind.patch | 113 ++++++++++++++++++++++++++++++++++++++++
 debian/patches/series           |   1 +
 3 files changed, 117 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 8017b99..2d5071f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,6 +11,9 @@ hurd (1:0.5.git20140326-2) UNRELEASED; urgency=medium
   [ Pino Toscano ]
   * control: remove unused gcc-4.7 build dependency. (Closes: #748000)
 
+  [ Gabriele Giacone ]
+  * patches/mount-bind.patch: Add bind option to our mount tool.
+
  -- Samuel Thibault <address@hidden>  Wed, 26 Mar 2014 13:12:42 +0100
 
 hurd (1:0.5.git20140326-1) unstable; urgency=medium
diff --git a/debian/patches/mount-bind.patch b/debian/patches/mount-bind.patch
new file mode 100644
index 0000000..7c7d301
--- /dev/null
+++ b/debian/patches/mount-bind.patch
@@ -0,0 +1,113 @@
+This is waiting for gg0's copyright assignment completion
+
+From: Gabriele Giacone <address@hidden>
+
+* utils/mount.c (parse_opt): Add -B/--bind/--firmlink/-o bind mount
+  options.  (do_mount): Do not pass bind mount option to settrans, set
+  firmlink fstype.  (main): Likewise.
+---
+ utils/mount.c | 38 +++++++++++++++++++++++++++++++-------
+ 1 file changed, 31 insertions(+), 7 deletions(-)
+
+diff --git a/utils/mount.c b/utils/mount.c
+index df77c66..e6893cb 100644
+--- a/utils/mount.c
++++ b/utils/mount.c
+@@ -64,6 +64,8 @@ static const struct argp_option argp_opts[] =
+   {"no-mtab", 'n', 0, 0, "Do not update /etc/mtab"},
+   {"test-opts", 'O', "OPTIONS", 0,
+    "Only mount fstab entries matching the given set of options"},
++  {"bind", 'B', 0, 0, "Bind mount, firmlink"},
++  {"firmlink", 0, 0, OPTION_ALIAS},
+   {"fake", 'f', 0, 0, "Do not actually mount, just pretend"},
+   {0, 0}
+ };
+@@ -87,6 +89,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
+     case 'r': ARGZ (add (&options, &options_len, "ro"));
+     case 'w': ARGZ (add (&options, &options_len, "rw"));
+     case 'u': ARGZ (add (&options, &options_len, "update"));
++    case 'B': ARGZ (add (&options, &options_len, "bind"));
+     case 'o': ARGZ (add_sep (&options, &options_len, arg, ','));
+     case 'v': ++verbose; break;
+ #undef ARGZ
+@@ -250,12 +253,20 @@ do_mount (struct fs *fs, int remount)
+       /* Append the fstab options to any specified on the command line.  */
+       ARGZ (create_sep (fs->mntent.mnt_opts, ',', &mntopts, &mntopts_len));
+ 
+-      /* Remove the `noauto' option, since it's for us not the filesystem.  */
++      /* Remove the `noauto' and `bind' options, since they're for us not the
++         filesystem.  */
+       for (o = mntopts; o; o = argz_next (mntopts, mntopts_len, o))
+-      if (!strcmp (o, MNTOPT_NOAUTO))
+-        break;
+-      if (o)
+-      argz_delete (&mntopts, &mntopts_len, o);
++        {
++          if (strcmp (o, MNTOPT_NOAUTO) == 0)
++            argz_delete (&mntopts, &mntopts_len, o);
++          if (strcmp (o, "bind") == 0)
++            {
++              fs->mntent.mnt_type = strdup ("firmlink");
++              if (! fs->mntent.mnt_type)
++                error (3, ENOMEM, "failed to allocate memory");
++              argz_delete (&mntopts, &mntopts_len, o);
++            }
++        }
+ 
+       ARGZ (append (&mntopts, &mntopts_len, options, options_len));
+     }
+@@ -273,7 +284,7 @@ do_mount (struct fs *fs, int remount)
+       {
+       ARGZ (add (&fsopts, &fsopts_len, o));
+       }
+-    else if (strcmp (o, "defaults") != 0)
++    else if ((strcmp (o, "defaults") != 0) && (strlen (o) != 0))
+       {
+       /* Prepend `--' to the option to make a long option switch,
+          e.g. `--ro' or `--rsize=1024'.  */
+@@ -572,7 +583,7 @@ do_query (struct fs *fs)
+ int
+ main (int argc, char **argv)
+ {
+-  unsigned int remount;
++  unsigned int remount, firmlink;
+   struct fstab *fstab;
+   struct fs *fs;
+   error_t err;
+@@ -598,6 +609,15 @@ main (int argc, char **argv)
+   if (err)
+     error (3, ENOMEM, "collecting mount options");
+ 
++  /* Do not pass `bind' option to firmlink translator */
++  char *opt = NULL;
++  while ((opt = argz_next (options, options_len, opt)))
++    if (strcmp (opt, "bind") == 0)
++      {
++        firmlink = 1;
++        argz_delete(&options, &options_len, opt);
++      }
++
+   if (device)                 /* two-argument form */
+     {
+       struct mntent m =
+@@ -608,6 +628,8 @@ main (int argc, char **argv)
+       mnt_opts: 0,
+       mnt_freq: 0, mnt_passno: 0
+       };
++      if (firmlink)
++        m.mnt_type = strdup ("firmlink");
+ 
+       err = fstab_add_mntent (fstab, &m, &fs);
+       if (err)
+@@ -625,6 +647,8 @@ main (int argc, char **argv)
+       mnt_opts: 0,
+       mnt_freq: 0, mnt_passno: 0
+       };
++      if (firmlink)
++        m.mnt_type = strdup ("firmlink");
+ 
+       err = fstab_add_mntent (fstab, &m, &fs);
+       if (err)
+-- 
+2.0.0.rc2
+
diff --git a/debian/patches/series b/debian/patches/series
index 17bcb32..82dc25c 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -42,3 +42,4 @@ mount.patch
 proc_set_init_task.patch
 newRPC.patch
 xkb-compat.patch
+mount-bind.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]