static fsal_status_t init_config(struct fsal_module *fsal_hdl, config_file_t config_struct, struct config_error_type *err_type) { struct glusterfs_fsal_module *glfsal_module = container_of(fsal_hdl, struct glusterfs_fsal_module, fsal); glfsal_module->fs_info = default_gluster_info; (void) load_config_from_parse(config_struct, &glfs_param, &glfsal_module->fs_info, true, err_type); /* * Global block is not mandatory, so evenif * it is not parsed correctly, don't consider * that as an error */ if (!config_error_is_harmless(err_type)) LogDebug(COMPONENT_FSAL, "Parsing Export Block failed"); display_fsinfo(&glfsal_module->fs_info); return fsalstat(ERR_FSAL_NO_ERROR, 0); }
static fsal_status_t zfs_init_config(struct fsal_module *fsal_hdl, config_file_t config_struct, struct config_error_type *err_type) { struct zfs_fsal_module *zfs_me = container_of(fsal_hdl, struct zfs_fsal_module, fsal); zfs_me->fs_info = default_zfs_info; /* copy the consts */ (void) load_config_from_parse(config_struct, &zfs_param, &zfs_me, true, err_type); if (!config_error_is_harmless(err_type)) return fsalstat(ERR_FSAL_INVAL, 0); display_fsinfo(&zfs_me->fs_info); LogFullDebug(COMPONENT_FSAL, "Supported attributes constant = 0x%" PRIx64, ZFS_SUPPORTED_ATTRIBUTES); LogFullDebug(COMPONENT_FSAL, "Supported attributes default = 0x%" PRIx64, default_zfs_info.supported_attrs); LogDebug(COMPONENT_FSAL, "FSAL INIT: Supported attributes mask = 0x%" PRIx64, zfs_me->fs_info.supported_attrs); return fsalstat(ERR_FSAL_NO_ERROR, 0); }
/* @brief Initialize the configuration * * Given the root of the Ganesha configuration structure, initialize * the FSAL parameters. * * @param[in] fsal_hdl The FSAL module * @param[in] config_struct Parsed ganesha configuration file * * @return FSAL status. */ static fsal_status_t init_config(struct fsal_module *fsal_hdl, config_file_t /*config_struct*/) { struct this_fsal_module *module_me = container_of(fsal_hdl, struct this_fsal_module, fsal); /* Get a copy of the defaults */ module_me->fs_info = default_ovs_info; display_fsinfo(&module_me->fs_info); try { initialize_logging(); } CATCH_STD_ALL_EWHAT({ std::stringstream ss; ss << EWHAT; LogMajor(COMPONENT_FSAL, const_cast<char*>("VFS FSAL: failed to initialize logging: %s"), ss.str().c_str()); return fsalstat(ERR_FSAL_BAD_INIT, 0); });
/* * This function initializes shared variables of the fsal. */ fsal_status_t fsal_internal_init_global(fsal_init_info_t * fsal_info, fs_common_initinfo_t * fs_common_info) { /* sanity check */ if(!fsal_info || !fs_common_info) ReturnCode(ERR_FSAL_FAULT, 0); /* inits FS call semaphore */ if(fsal_info->max_fs_calls > 0) { int rc; limit_calls = TRUE; rc = semaphore_init(&sem_fs_calls, fsal_info->max_fs_calls); if(rc != 0) ReturnCode(ERR_FSAL_SERVERFAULT, rc); LogDebug(COMPONENT_FSAL, "FSAL INIT: Max simultaneous calls to filesystem is limited to %u.", fsal_info->max_fs_calls); } else { LogDebug(COMPONENT_FSAL "FSAL INIT: Max simultaneous calls to filesystem is unlimited."); } /* setting default values. */ global_fs_info = default_hpss_info; /* Analyzing fs_common_info struct */ if((fs_common_info->behaviors.maxfilesize != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.maxlink != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.maxnamelen != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.maxpathlen != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.no_trunc != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.case_insensitive != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.case_preserving != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.named_attr != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.lease_time != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.supported_attrs != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.homogenous != FSAL_INIT_FS_DEFAULT)) ReturnCode(ERR_FSAL_NOTSUPP, 0); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, symlink_support); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, link_support); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, lock_support); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, lock_support_owner); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, lock_support_async_block); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, cansettime); SET_INTEGER_PARAM(global_fs_info, fs_common_info, maxread); SET_INTEGER_PARAM(global_fs_info, fs_common_info, maxwrite); SET_BITMAP_PARAM(global_fs_info, fs_common_info, umask); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, auth_exportpath_xdev); SET_BITMAP_PARAM(global_fs_info, fs_common_info, xattr_access_rights); display_fsinfo(&global_fs_info); ReturnCode(ERR_FSAL_NO_ERROR, 0); }
/* * This function initializes shared variables of the fsal. */ fsal_status_t fsal_internal_init_global(fsal_init_info_t * fsal_info, fs_common_initinfo_t * fs_common_info, posixfs_specific_initinfo_t * fs_specific_info) { /* sanity check */ if(!fsal_info || !fs_common_info || !fs_specific_info) ReturnCode(ERR_FSAL_FAULT, 0); /* inits FS call semaphore */ if(fsal_info->max_fs_calls > 0) { int rc; limit_calls = TRUE; rc = semaphore_init(&sem_fs_calls, fsal_info->max_fs_calls); if(rc != 0) ReturnCode(ERR_FSAL_SERVERFAULT, rc); LogDebug(COMPONENT_FSAL, "FSAL INIT: Max simultaneous calls to filesystem is limited to %u.", fsal_info->max_fs_calls); } else { LogDebug(COMPONENT_FSAL, "FSAL INIT: Max simultaneous calls to filesystem is unlimited."); } /* setting default values. */ global_fs_info = default_posix_info; display_fsinfo(&default_posix_info); /* Analyzing fs_common_info struct */ if((fs_common_info->behaviors.maxfilesize != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.maxlink != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.maxnamelen != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.maxpathlen != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.no_trunc != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.case_insensitive != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.case_preserving != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.named_attr != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.lease_time != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.supported_attrs != FSAL_INIT_FS_DEFAULT) || (fs_common_info->behaviors.homogenous != FSAL_INIT_FS_DEFAULT)) ReturnCode(ERR_FSAL_NOTSUPP, 0); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, symlink_support); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, link_support); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, lock_support); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, lock_support_owner); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, lock_support_async_block); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, cansettime); SET_INTEGER_PARAM(global_fs_info, fs_common_info, maxread); SET_INTEGER_PARAM(global_fs_info, fs_common_info, maxwrite); SET_BITMAP_PARAM(global_fs_info, fs_common_info, umask); SET_BOOLEAN_PARAM(global_fs_info, fs_common_info, auth_exportpath_xdev); SET_BITMAP_PARAM(global_fs_info, fs_common_info, xattr_access_rights); /* setting global database parameters */ global_posixdb_params = fs_specific_info->dbparams; LogFullDebug(COMPONENT_FSAL, "Supported attributes constant = 0x%llX.", POSIX_SUPPORTED_ATTRIBUTES); LogFullDebug(COMPONENT_FSAL, "Supported attributes default = 0x%llX.", default_posix_info.supported_attrs); LogDebug(COMPONENT_FSAL, "FSAL INIT: Supported attributes mask = 0x%llX.", global_fs_info.supported_attrs); /* initialize database cache */ if(fsal_posixdb_cache_init()) ReturnCode(ERR_FSAL_FAULT, 0); LogDebug(COMPONENT_FSAL, "global_fs_info {"); LogDebug(COMPONENT_FSAL, " maxfilesize = %zu ", global_fs_info.maxfilesize); LogDebug(COMPONENT_FSAL, " maxlink = %lu ", global_fs_info.maxlink); LogDebug(COMPONENT_FSAL, " maxnamelen = %lu ", global_fs_info.maxnamelen); LogDebug(COMPONENT_FSAL, " maxpathlen = %lu ", global_fs_info.maxpathlen); LogDebug(COMPONENT_FSAL, " no_trunc = %d ", global_fs_info.no_trunc); LogDebug(COMPONENT_FSAL, " chown_restricted = %d ", global_fs_info.chown_restricted); LogDebug(COMPONENT_FSAL, " case_insensitive = %d ", global_fs_info.case_insensitive); LogDebug(COMPONENT_FSAL, " case_preserving = %d ", global_fs_info.case_preserving); LogDebug(COMPONENT_FSAL, " fh_expire_type = %hu ", global_fs_info.fh_expire_type); LogDebug(COMPONENT_FSAL, " link_support = %d ", global_fs_info.link_support); LogDebug(COMPONENT_FSAL, " symlink_support = %d ", global_fs_info.symlink_support); LogDebug(COMPONENT_FSAL, " lock_support = %d ", global_fs_info.lock_support); LogDebug(COMPONENT_FSAL, " lock_support_owner = %d ", global_fs_info.lock_support_owner); LogDebug(COMPONENT_FSAL, " lock_support_async_block = %d ", global_fs_info.lock_support_async_block); LogDebug(COMPONENT_FSAL, " named_attr = %d ", global_fs_info.named_attr); LogDebug(COMPONENT_FSAL, " unique_handles = %d ", global_fs_info.unique_handles); LogDebug(COMPONENT_FSAL, " acl_support = %hu ", global_fs_info.acl_support); LogDebug(COMPONENT_FSAL, " cansettime = %d ", global_fs_info.cansettime); LogDebug(COMPONENT_FSAL, " homogenous = %d ", global_fs_info.homogenous); LogDebug(COMPONENT_FSAL, " supported_attrs = %llX ", global_fs_info.supported_attrs); LogDebug(COMPONENT_FSAL, " maxread = %zu ", global_fs_info.maxread); LogDebug(COMPONENT_FSAL, " maxwrite = %zu ", global_fs_info.maxwrite); LogDebug(COMPONENT_FSAL, " umask = %X ", global_fs_info.umask); LogDebug(COMPONENT_FSAL, "}"); ReturnCode(ERR_FSAL_NO_ERROR, 0); }