aboutsummaryrefslogtreecommitdiffstats
path: root/meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-add-symlink-pseudo-option.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-add-symlink-pseudo-option.patch')
-rw-r--r--meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-add-symlink-pseudo-option.patch217
1 files changed, 0 insertions, 217 deletions
diff --git a/meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-add-symlink-pseudo-option.patch b/meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-add-symlink-pseudo-option.patch
deleted file mode 100644
index b0440f4a51..0000000000
--- a/meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-add-symlink-pseudo-option.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-autofs-5.0.7 - add symlink pseudo option
-
-From: Ian Kent <raven@themaw.net>
-
-Add a "symlink" pseudo option to tell the bind mount module to symlink
-instead of bind when mounting mounts other than direct mounts and
-non-root indirect mount offset mounts (aka. non-root multi-mount
-entries).
----
- CHANGELOG | 1 +
- include/automount.h | 3 +++
- lib/master_parse.y | 8 +++++++-
- lib/master_tok.l | 1 +
- man/auto.master.5.in | 8 ++++++++
- modules/mount_autofs.c | 5 +++++
- modules/mount_bind.c | 36 +++++++++++++++++++++++++++++++++++-
- 7 files changed, 60 insertions(+), 2 deletions(-)
-
-diff --git a/CHANGELOG b/CHANGELOG
-index c189483..247d334 100644
---- a/CHANGELOG
-+++ b/CHANGELOG
-@@ -32,6 +32,7 @@
- - fix wildcard multi map regression.
- - fix file descriptor leak when reloading the daemon.
- - depricate nosymlink pseudo option.
-+- add symlink pseudo option.
-
- 25/07/2012 autofs-5.0.7
- =======================
-diff --git a/include/automount.h b/include/automount.h
-index 37541f5..e72fa0d 100644
---- a/include/automount.h
-+++ b/include/automount.h
-@@ -455,6 +455,9 @@ struct kernel_mod_version {
- /* Don't use bind mounts even when system supports them */
- #define MOUNT_FLAG_NOBIND 0x0020
-
-+/* Use symlinks instead of bind mounting local mounts */
-+#define MOUNT_FLAG_SYMLINK 0x0040
-+
- struct autofs_point {
- pthread_t thid;
- char *path; /* Mount point name */
-diff --git a/lib/master_parse.y b/lib/master_parse.y
-index f925b5a..11caf5b 100644
---- a/lib/master_parse.y
-+++ b/lib/master_parse.y
-@@ -57,6 +57,7 @@ static char *type;
- static char *format;
- static long timeout;
- static long negative_timeout;
-+static unsigned symlnk;
- static unsigned nobind;
- static unsigned ghost;
- extern unsigned global_selection_options;
-@@ -100,7 +101,7 @@ static int master_fprintf(FILE *, char *, ...);
- %token COMMENT
- %token MAP
- %token OPT_TIMEOUT OPT_NTIMEOUT OPT_NOBIND OPT_NOGHOST OPT_GHOST OPT_VERBOSE
--%token OPT_DEBUG OPT_RANDOM OPT_USE_WEIGHT
-+%token OPT_DEBUG OPT_RANDOM OPT_USE_WEIGHT OPT_SYMLINK
- %token COLON COMMA NL DDASH
- %type <strtype> map
- %type <strtype> options
-@@ -186,6 +187,7 @@ line:
- | PATH OPT_USE_WEIGHT { master_notify($1); YYABORT; }
- | PATH OPT_DEBUG { master_notify($1); YYABORT; }
- | PATH OPT_TIMEOUT { master_notify($1); YYABORT; }
-+ | PATH OPT_SYMLINK { master_notify($1); YYABORT; }
- | PATH OPT_NOBIND { master_notify($1); YYABORT; }
- | PATH OPT_GHOST { master_notify($1); YYABORT; }
- | PATH OPT_NOGHOST { master_notify($1); YYABORT; }
-@@ -557,6 +559,7 @@ option: daemon_option
-
- daemon_option: OPT_TIMEOUT NUMBER { timeout = $2; }
- | OPT_NTIMEOUT NUMBER { negative_timeout = $2; }
-+ | OPT_SYMLINK { symlnk = 1; }
- | OPT_NOBIND { nobind = 1; }
- | OPT_NOGHOST { ghost = 0; }
- | OPT_GHOST { ghost = 1; }
-@@ -627,6 +630,7 @@ static void local_init_vars(void)
- debug = 0;
- timeout = -1;
- negative_timeout = 0;
-+ symlnk = 0;
- nobind = 0;
- ghost = defaults_get_browse_mode();
- random_selection = global_selection_options & MOUNT_FLAG_RANDOM_SELECT;
-@@ -811,6 +815,8 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne
- entry->ap->flags |= MOUNT_FLAG_RANDOM_SELECT;
- if (use_weight)
- entry->ap->flags |= MOUNT_FLAG_USE_WEIGHT_ONLY;
-+ if (symlnk)
-+ entry->ap->flags |= MOUNT_FLAG_SYMLINK;
- if (negative_timeout)
- entry->ap->negative_timeout = negative_timeout;
-
-diff --git a/lib/master_tok.l b/lib/master_tok.l
-index 30abb15..f9b4e55 100644
---- a/lib/master_tok.l
-+++ b/lib/master_tok.l
-@@ -361,6 +361,7 @@ OPTNTOUT (-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo
- return(NUMBER);
- }
-
-+ -?symlink { return(OPT_SYMLINK); }
- -?nobind { return(OPT_NOBIND); }
- -?nobrowse { return(OPT_NOGHOST); }
- -g|--ghost|-?browse { return(OPT_GHOST); }
-diff --git a/man/auto.master.5.in b/man/auto.master.5.in
-index 8007542..bbea43a 100644
---- a/man/auto.master.5.in
-+++ b/man/auto.master.5.in
-@@ -159,6 +159,14 @@ on individual map entries of both types. Bind mounting of NFS file
- systems can also be prevented for specific map entrys by adding the
- "port=" mount option to the entries.
- .TP
-+.I "symlink"
-+This option makes bind mounting use a symlink instead of an actual bind
-+mount. It is an autofs specific option that is a pseudo mount option and
-+so is given without a leading dash. It may be used with indirect map
-+entries only, either in the master map (so it effects all map entries)
-+or with individual map entries. The option is ignored for direct mounts
-+and non-root offest mount entries.
-+.TP
- .I "\-r, \-\-random-multimount-selection"
- Enables the use of ramdom selection when choosing a host from a
- list of replicated servers. This option is applied to this mount
-diff --git a/modules/mount_autofs.c b/modules/mount_autofs.c
-index ef16020..8c1e600 100644
---- a/modules/mount_autofs.c
-+++ b/modules/mount_autofs.c
-@@ -51,6 +51,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,
- int argc, status;
- int nobind = ap->flags & MOUNT_FLAG_NOBIND;
- int ghost = ap->flags & MOUNT_FLAG_GHOST;
-+ int symlnk = ap->flags & MOUNT_FLAG_SYMLINK;
- time_t timeout = ap->entry->maps->exp_timeout;
- unsigned logopt = ap->logopt;
- struct map_type_info *info;
-@@ -120,6 +121,8 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,
- nobind = 1;
- else if (strncmp(cp, "browse", 6) == 0)
- ghost = 1;
-+ else if (strncmp(cp, "symlink", 7) == 0)
-+ symlnk = 1;
- else if (strncmp(cp, "timeout=", 8) == 0) {
- char *val = strchr(cp, '=');
- unsigned tout;
-@@ -158,6 +161,8 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,
- }
- nap = entry->ap;
- nap->parent = ap;
-+ if (symlnk)
-+ nap->flags |= MOUNT_FLAG_SYMLINK;
-
- argc = 1;
-
-diff --git a/modules/mount_bind.c b/modules/mount_bind.c
-index 9bce686..4975294 100644
---- a/modules/mount_bind.c
-+++ b/modules/mount_bind.c
-@@ -73,10 +73,44 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
- char buf[MAX_ERR_BUF];
- int err;
- int i, len;
-+ int symlnk = (*name != '/' && (ap->flags & MOUNT_FLAG_SYMLINK));
-
- if (ap->flags & MOUNT_FLAG_REMOUNT)
- return 0;
-
-+ /* Extract "symlink" pseudo-option which forces local filesystems
-+ * to be symlinked instead of bound.
-+ */
-+ if (*name != '/' && !symlnk && options) {
-+ const char *comma;
-+ int o_len = strlen(options) + 1;
-+
-+ for (comma = options; *comma != '\0';) {
-+ const char *cp;
-+ const char *end;
-+
-+ while (*comma == ',')
-+ comma++;
-+
-+ /* Skip leading white space */
-+ while (*comma == ' ' || *comma == '\t')
-+ comma++;
-+
-+ cp = comma;
-+ while (*comma != '\0' && *comma != ',')
-+ comma++;
-+
-+ /* Skip trailing white space */
-+ end = comma - 1;
-+ while (*comma == ' ' || *comma == '\t')
-+ end--;
-+
-+ o_len = end - cp + 1;
-+ if (strncmp("symlink", cp, o_len) == 0)
-+ symlnk = 1;
-+ }
-+ }
-+
- /* Root offset of multi-mount */
- len = strlen(root);
- if (root[len - 1] == '/') {
-@@ -100,7 +134,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
- if (options == NULL || *options == '\0')
- options = "defaults";
-
-- if (bind_works) {
-+ if (!symlnk && bind_works) {
- int status, existed = 1;
-
- debug(ap->logopt, MODPREFIX "calling mkdir_path %s", fullpath);