[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[hurd] 13/14: utils/settrans: implement active translator stacking
From: |
Samuel Thibault |
Subject: |
[hurd] 13/14: utils/settrans: implement active translator stacking |
Date: |
Sun, 22 May 2016 01:15:22 +0000 |
This is an automated email from the git hooks/post-receive script.
sthibault pushed a commit to branch upstream
in repository hurd.
commit 55f23b9e82d6086bc4f21411e25aaf9746928d79
Author: Justus Winter <address@hidden>
Date: Sat Apr 23 17:39:47 2016 +0200
utils/settrans: implement active translator stacking
* utils/settrans.c (OPT_STACK): New macro.
(options): New option.
(main): Handle new option.
(open_node): Use different flags for the lookup of the underlying
node.
---
utils/settrans.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/utils/settrans.c b/utils/settrans.c
index e01906b..ee7cba5 100644
--- a/utils/settrans.c
+++ b/utils/settrans.c
@@ -47,6 +47,7 @@ const char *argp_program_version = STANDARD_HURD_VERSION
(settrans);
#define STRINGIFY(arg) _STRINGIFY (arg)
#define OPT_CHROOT_CHDIR -1
+#define OPT_STACK -2
static struct argp_option options[] =
{
@@ -66,6 +67,8 @@ static struct argp_option options[] =
"(do not ask it to go away)"},
{"underlying", 'U', "NODE", 0, "Open NODE and hand it to the translator "
"as the underlying node"},
+ {"stack", OPT_STACK, 0, 0, "Replace an existing translator, but keep it "
+ "running, and put the new one on top"},
{"chroot", 'C', 0, 0,
"Instead of setting the node's translator, take following arguments up to"
@@ -156,10 +159,12 @@ main(int argc, char *argv[])
int passive = 0, active = 0, keep_active = 0, pause = 0, kill_active = 0,
orphan = 0;
int start = 0;
+ int stack = 0;
char *pid_file = NULL;
int excl = 0;
int timeout = DEFAULT_TIMEOUT * 1000; /* ms */
char *underlying_node_name = NULL;
+ int underlying_lookup_flags;
char **chroot_command = 0;
char *chroot_chdir = "/";
@@ -193,6 +198,11 @@ main(int argc, char *argv[])
start = 1;
active = 1; /* start implies active */
break;
+ case OPT_STACK:
+ stack = 1;
+ active = 1; /* stack implies active */
+ orphan = 1; /* stack implies orphan */
+ break;
case 'p': passive = 1; break;
case 'k': keep_active = 1; break;
case 'g': kill_active = 1; break;
@@ -261,6 +271,14 @@ main(int argc, char *argv[])
argp_parse (&argp, argc, argv, ARGP_IN_ORDER, 0, 0);
+ if (stack)
+ {
+ underlying_node_name = node_name;
+ underlying_lookup_flags = lookup_flags && ~O_NOTRANS;
+ }
+ else
+ underlying_lookup_flags = lookup_flags;
+
if (!active && !passive && !chroot_command)
passive = 1; /* By default, set the passive translator. */
@@ -341,7 +359,8 @@ main(int argc, char *argv[])
if (underlying_node_name)
{
*underlying = file_name_lookup (underlying_node_name,
- flags | lookup_flags, 0666);
+ flags | underlying_lookup_flags,
+ 0666);
if (! MACH_PORT_VALID (*underlying))
{
/* For the error message. */
--
Alioth's /usr/local/bin/git-commit-notice on
/srv/git.debian.org/git/pkg-hurd/hurd.git
- [hurd] 05/14: Complete changes to use -L instead of -Wl, -rpath-link, (continued)
- [hurd] 05/14: Complete changes to use -L instead of -Wl, -rpath-link, Samuel Thibault, 2016/05/21
- [hurd] 07/14: mach-defpager: fix panic invocation, Samuel Thibault, 2016/05/21
- [hurd] 02/14: libihash: fix corner case, Samuel Thibault, 2016/05/21
- [hurd] 12/14: libnetfs: treat disconnected shadow roots as virtual roots, Samuel Thibault, 2016/05/21
- [hurd] 14/14: Avoid superfluous locking of node, Samuel Thibault, 2016/05/21
- [hurd] 10/14: libdiskfs: cosmetic changes, Samuel Thibault, 2016/05/21
- [hurd] 09/14: libnetfs: rename 'diruser' to 'dircred', Samuel Thibault, 2016/05/21
- [hurd] 08/14: libnetfs: rename 'error' to 'err', Samuel Thibault, 2016/05/21
- [hurd] 03/14: libihash: enable fast insertions replacing tombstones, Samuel Thibault, 2016/05/21
- [hurd] 11/14: Unify the short-circuit translator logic, Samuel Thibault, 2016/05/21
- [hurd] 13/14: utils/settrans: implement active translator stacking,
Samuel Thibault <=