/* * Mount the root... */ static int amfs_root_mount(am_node *mp, mntfs *mf) { mf->mf_mount = strealloc(mf->mf_mount, pid_fsname); mf->mf_private = (voidp) mapc_find(mf->mf_info, "", NULL); mf->mf_prfree = mapc_free; return 0; }
/* * Build a new map cache for this node, or re-use * an existing cache for the same map. */ void amfs_mkcacheref(mntfs *mf) { char *cache; if (mf->mf_fo && mf->mf_fo->opt_cache) cache = mf->mf_fo->opt_cache; else cache = "none"; mf->mf_private = (opaque_t) mapc_find(mf->mf_info, cache, (mf->mf_fo ? mf->mf_fo->opt_maptype : NULL), mf->mf_mount); mf->mf_prfree = mapc_free; }
/* * Add a new entry to the root map * * dir - directory (key) * opts - mount options * map - map name */ void root_newmap(char *dir, char *opts, char *map) { char str[MAXPATHLEN]; /* * First make sure we have a root map to talk about... */ if (!root_map) root_map = mapc_find(ROOT_MAP, "mapdefault"); /* * Then add the entry... */ dir = strdup(dir); if (map) snprintf(str, sizeof(str), "cache:=mapdefault;type:=toplvl;fs:=\"%s\";%s", map, opts ? opts : ""); else strlcpy(str, opts, sizeof str); mapc_repl_kv(root_map, dir, strdup(str)); }