Print this page
6198 Let's EOL cachefs
*** 21,30 ****
--- 21,31 ----
/*
* autod_parse.c
*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
+ * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
*/
#include <stdio.h>
#include <ctype.h>
#include <string.h>
*** 559,570 ****
node = node->leveldir;
}
return (rc);
}
- #define BACKFSTYPE "backfstype" /* used in cachefs options */
- #define BACKFSTYPE_EQ "backfstype="
#define FSTYPE "fstype"
#define FSTYPE_EQ "fstype="
#define NO_OPTS ""
/*
--- 560,569 ----
*** 606,642 ****
if ((me->map_mntopts = strdup(entryopts)) == NULL)
return (ENOMEM);
strcpy(mounter, fstype);
/*
- * The following ugly chunk of code crept in as a result of
- * cachefs. If it's a cachefs mount of an nfs filesystem, then
- * it's important to parse the nfs special field. Otherwise,
- * just hand the special field to the fs-specific mount
- */
- if (strcmp(fstype, MNTTYPE_CACHEFS) == 0) {
- struct mnttab m;
- char *p;
-
- m.mnt_mntopts = entryopts;
- if ((p = hasmntopt(&m, BACKFSTYPE)) != NULL) {
- int len = strlen(MNTTYPE_NFS);
-
- p += strlen(BACKFSTYPE_EQ);
-
- if (strncmp(p, MNTTYPE_NFS, len) == 0 &&
- (p[len] == '\0' || p[len] == ',')) {
- /*
- * Cached nfs mount
- */
- (void) strcpy(fstype, MNTTYPE_NFS);
- (void) strcpy(mounter, MNTTYPE_CACHEFS);
- }
- }
- }
-
- /*
* child options are exactly fstype = somefs, we need to do some
* more option pushing work.
*/
if (fstype_opt == TRUE &&
(strcmp(me->map_mntopts, NO_OPTS) == 0)) {
--- 605,614 ----
*** 662,674 ****
* Check the option string for an "fstype"
* option. If found, return the fstype
* and the option string with the fstype
* option removed, e.g.
*
! * input: "fstype=cachefs,ro,nosuid"
* opts: "ro,nosuid"
! * fstype: "cachefs"
*
* Also indicates if the fstype option was present
* by setting a flag, if the pointer to the flag
* is not NULL.
*/
--- 634,646 ----
* Check the option string for an "fstype"
* option. If found, return the fstype
* and the option string with the fstype
* option removed, e.g.
*
! * input: "fstype=nfs,ro,nosuid"
* opts: "ro,nosuid"
! * fstype: "nfs"
*
* Also indicates if the fstype option was present
* by setting a flag, if the pointer to the flag
* is not NULL.
*/
*** 708,718 ****
*/
static int
fstype_opts(struct mapent *me, char *opts, char *defaultopts,
char *mapopts)
{
- char pushopts[AUTOFS_MAXOPTSLEN];
char pushentryopts[AUTOFS_MAXOPTSLEN];
char pushfstype[MAX_FSLEN];
if (defaultopts && *defaultopts == '-')
defaultopts++;
--- 680,689 ----
*** 724,742 ****
*/
if (strcmp(defaultopts, opts) == 0) {
if (*mapopts == '-')
mapopts++;
get_opts(mapopts, pushentryopts, pushfstype, NULL);
- strcpy(pushopts, mapopts);
} else {
get_opts(defaultopts, pushentryopts, pushfstype, NULL);
- strcpy(pushopts, defaultopts);
}
- if (strcmp(pushfstype, MNTTYPE_CACHEFS) == 0)
- me->map_mntopts = strdup(pushopts);
- else
me->map_mntopts = strdup(pushentryopts);
if (!me->map_mntopts) {
syslog(LOG_ERR, "fstype_opts: No memory");
return (ENOMEM);
--- 695,708 ----
*** 1987,2025 ****
*texp = ex;
}
}
exlist = texlist;
- /*
- * The following ugly chunk of code crept in as
- * a result of cachefs. If it's a cachefs mount
- * of an nfs filesystem, then have it handled as
- * an nfs mount but have cachefs do the mount.
- */
(void) strcpy(fstype, MNTTYPE_NFS);
get_opts(mapopts, entryopts, fstype, NULL);
(void) strcpy(mounter, fstype);
- if (strcmp(fstype, MNTTYPE_CACHEFS) == 0) {
- struct mnttab m;
- char *p;
- m.mnt_mntopts = entryopts;
- if ((p = hasmntopt(&m, "backfstype")) != NULL) {
- int len = strlen(MNTTYPE_NFS);
-
- p += 11;
- if (strncmp(p, MNTTYPE_NFS, len) == 0 &&
- (p[len] == '\0' || p[len] == ',')) {
- /*
- * Cached nfs mount
- */
- (void) strcpy(fstype, MNTTYPE_NFS);
- (void) strcpy(mounter, MNTTYPE_CACHEFS);
- }
- }
- }
-
/* Now create a mapent from the export list */
ms = NULL;
me = NULL;
for (ex = exlist; ex; ex = ex->ex_next) {
--- 1953,1966 ----