static struct fs *
cmd_fs_init(struct doveadm_cmd_context *cctx)
{
- struct fs_settings fs_set;
+ struct fs_parameters fs_param;
struct fs *fs;
const char *fs_driver, *fs_args, *error;
!doveadm_cmd_param_str(cctx, "fs-args", &fs_args))
fs_cmd_help(cctx);
- i_zero(&fs_set);
- fs_set.temp_dir = doveadm_settings->mail_temp_dir;
- fs_set.base_dir = doveadm_settings->base_dir;
+ i_zero(&fs_param);
+ fs_param.temp_dir = doveadm_settings->mail_temp_dir;
+ fs_param.base_dir = doveadm_settings->base_dir;
- if (fs_init(fs_driver, fs_args, cctx->event, &fs_set, &fs, &error) < 0)
+ if (fs_init(fs_driver, fs_args, cctx->event, &fs_param,
+ &fs, &error) < 0)
i_fatal("fs_init() failed: %s", error);
return fs;
}
const struct dict_legacy_settings *set,
struct dict **dict_r, const char **error_r)
{
- struct fs_settings fs_set;
+ struct fs_parameters fs_param;
struct fs *fs;
struct fs_dict *dict;
const char *p, *fs_driver, *fs_args;
fs_args = p+1;
}
- i_zero(&fs_set);
- fs_set.base_dir = set->base_dir;
- if (fs_init(fs_driver, fs_args, set->event_parent, &fs_set,
+ i_zero(&fs_param);
+ fs_param.base_dir = set->base_dir;
+ if (fs_init(fs_driver, fs_args, set->event_parent, &fs_param,
&fs, error_r) < 0)
return -1;
struct fs_vfuncs {
struct fs *(*alloc)(void);
int (*init)(struct fs *fs, const char *args,
- struct event *event_parent, const struct fs_settings *set,
+ struct event *event_parent,
+ const struct fs_parameters *params,
const char **error_r);
void (*deinit)(struct fs *fs);
void (*free)(struct fs *fs);
static int
fs_alloc(const struct fs *fs_class, const char *args,
- struct event *event_parent, const struct fs_settings *set,
+ struct event *event_parent, const struct fs_parameters *params,
struct fs **fs_r, const char **error_r)
{
struct fs *fs;
fs = fs_class->v.alloc();
fs->refcount = 1;
- fs->enable_timing = set->enable_timing;
+ fs->enable_timing = params->enable_timing;
i_array_init(&fs->module_contexts, 5);
fs->event = fs_create_event(fs, event_parent);
T_BEGIN {
- ret = fs_class->v.init(fs, args, event_parent, set, &error);
+ ret = fs_class->v.init(fs, args, event_parent, params, &error);
} T_END_PASS_STR_IF(ret < 0, &error);
if (ret < 0) {
*error_r = t_strdup_printf("%s: %s", fs_class->name, error);
fs_unref(&fs);
return -1;
}
- fs->username = i_strdup(set->username);
- fs->session_id = i_strdup(set->session_id);
+ fs->username = i_strdup(params->username);
+ fs->session_id = i_strdup(params->session_id);
*fs_r = fs;
return 0;
}
}
int fs_init(const char *driver, const char *args,
- struct event *event_parent, const struct fs_settings *set,
+ struct event *event_parent, const struct fs_parameters *params,
struct fs **fs_r, const char **error_r)
{
const struct fs *fs_class;
*error_r = t_strdup_printf("Unknown fs driver: %s", driver);
return -1;
}
- if (fs_alloc(fs_class, args, event_parent, set, fs_r, error_r) < 0)
+ if (fs_alloc(fs_class, args, event_parent, params, fs_r, error_r) < 0)
return -1;
event_set_ptr((*fs_r)->event, FS_EVENT_FIELD_FS, *fs_r);
- temp_file_prefix = set->temp_file_prefix != NULL ?
- set->temp_file_prefix : ".temp.dovecot";
- if(set->temp_dir == NULL)
+ temp_file_prefix = params->temp_file_prefix != NULL ?
+ params->temp_file_prefix : ".temp.dovecot";
+ if(params->temp_dir == NULL)
(*fs_r)->temp_path_prefix = i_strconcat("/tmp/",
temp_file_prefix, NULL);
else
- (*fs_r)->temp_path_prefix = i_strconcat(set->temp_dir, "/",
+ (*fs_r)->temp_path_prefix = i_strconcat(params->temp_dir, "/",
temp_file_prefix, NULL);
return 0;
}
FS_OP_COUNT
};
-struct fs_settings {
+struct fs_parameters {
/* Username and session ID are mainly used for debugging/logging,
but may also be useful for other purposes if they exist (they
may be NULL). */
uint64_t write_bytes;
/* Cumulative sum of usecs spent on calls - set only if
- fs_settings.enable_timing=TRUE */
+ fs_parameters.enable_timing=TRUE */
struct stats_dist *timings[FS_OP_COUNT];
};
/* event_parent can be overridden by fs_file_init_with_event() */
int fs_init(const char *driver, const char *args,
- struct event *event_parent, const struct fs_settings *set,
+ struct event *event_parent, const struct fs_parameters *params,
struct fs **fs_r, const char **error_r);
/* same as fs_unref() */
void fs_deinit(struct fs **fs);
static int
fs_dict_init(struct fs *_fs, const char *args, struct event *event_parent,
- const struct fs_settings *set, const char **error_r)
+ const struct fs_parameters *params, const char **error_r)
{
struct dict_fs *fs = (struct dict_fs *)_fs;
struct dict_legacy_settings dict_set;
}
i_zero(&dict_set);
- dict_set.base_dir = set->base_dir;
+ dict_set.base_dir = params->base_dir;
dict_set.event_parent = event_parent;
if (dict_init_legacy(p, &dict_set, &fs->dict, &error) < 0) {
static int
fs_metawrap_init(struct fs *_fs, const char *args,
- struct event *event_parent, const struct fs_settings *set,
+ struct event *event_parent, const struct fs_parameters *params,
const char **error_r)
{
struct metawrap_fs *fs = METAWRAP_FS(_fs);
parent_name = t_strdup_until(args, parent_args);
parent_args++;
}
- if (fs_init(parent_name, parent_args, event_parent, set,
+ if (fs_init(parent_name, parent_args, event_parent, params,
&_fs->parent, error_r) < 0)
return -1;
if ((fs_get_properties(_fs->parent) & FS_PROPERTY_METADATA) == 0)
static int
fs_posix_init(struct fs *_fs, const char *args,
struct event *event_parent ATTR_UNUSED,
- const struct fs_settings *set, const char **error_r)
+ const struct fs_parameters *params, const char **error_r)
{
struct posix_fs *fs = container_of(_fs, struct posix_fs, fs);
const char *value, *const *tmp;
- fs->temp_file_prefix = set->temp_file_prefix != NULL ?
- i_strdup(set->temp_file_prefix) : i_strdup("temp.dovecot.");
+ fs->temp_file_prefix = params->temp_file_prefix != NULL ?
+ i_strdup(params->temp_file_prefix) : i_strdup("temp.dovecot.");
fs->temp_file_prefix_len = strlen(fs->temp_file_prefix);
- fs->root_path = i_strdup(set->root_path);
+ fs->root_path = i_strdup(params->root_path);
fs->lock_method = FS_POSIX_LOCK_METHOD_FLOCK;
fs->mode = FS_DEFAULT_MODE;
}
static int
-fs_randomfail_init(struct fs *_fs, const char *args,
- struct event *event_parent, const struct fs_settings *set,
- const char **error_r)
+fs_randomfail_init(struct fs *_fs, const char *args, struct event *event_parent,
+ const struct fs_parameters *params, const char **error_r)
{
struct randomfail_fs *fs = RANDOMFAIL_FS(_fs);
const char *p, *parent_name, *parent_args, *error;
parent_name = t_strdup_until(args, parent_args);
parent_args++;
}
- if (fs_init(parent_name, parent_args, event_parent, set,
+ if (fs_init(parent_name, parent_args, event_parent, params,
&_fs->parent, error_r) < 0)
return -1;
return 0;
}
static int
-fs_sis_queue_init(struct fs *_fs, const char *args,
- struct event *event_parent, const struct fs_settings *set,
- const char **error_r)
+fs_sis_queue_init(struct fs *_fs, const char *args, struct event *event_parent,
+ const struct fs_parameters *params, const char **error_r)
{
struct sis_queue_fs *fs = SISQUEUE_FS(_fs);
const char *p, *parent_name, *parent_args;
parent_args = "";
else
parent_name = t_strdup_until(parent_name, parent_args++);
- if (fs_init(parent_name, parent_args, event_parent, set,
+ if (fs_init(parent_name, parent_args, event_parent, params,
&_fs->parent, error_r) < 0)
return -1;
return 0;
static int
fs_sis_init(struct fs *_fs, const char *args, struct event *event_parent,
- const struct fs_settings *set, const char **error_r)
+ const struct fs_parameters *params, const char **error_r)
{
enum fs_properties props;
const char *parent_name, *parent_args;
parent_name = t_strdup_until(args, parent_args);
parent_args++;
}
- if (fs_init(parent_name, parent_args, event_parent, set,
+ if (fs_init(parent_name, parent_args, event_parent, params,
&_fs->parent, error_r) < 0)
return -1;
props = fs_get_properties(_fs->parent);
void test_fs_async(const char *test_name, enum fs_properties properties,
const char *driver, const char *args)
{
- struct fs_settings fs_set;
+ struct fs_parameters fs_params;
struct fs *fs;
struct test_fs *test_fs;
const char *error;
- i_zero(&fs_set);
- if (fs_init(driver, args, NULL, &fs_set, &fs, &error) < 0)
+ i_zero(&fs_params);
+ if (fs_init(driver, args, NULL, &fs_params, &fs, &error) < 0)
i_fatal("fs_init() failed: %s", error);
test_fs = test_fs_get(fs);
static int
fs_test_init(struct fs *_fs ATTR_UNUSED, const char *args ATTR_UNUSED,
struct event *event_parent ATTR_UNUSED,
- const struct fs_settings *set ATTR_UNUSED,
+ const struct fs_parameters *params ATTR_UNUSED,
const char **error_r ATTR_UNUSED)
{
return 0;
#include "fs-test.h"
#include "test-common.h"
-static const struct fs_settings fs_set;
+static const struct fs_parameters fs_params;
static void test_fs_metawrap_stat(void)
{
test_begin("fs metawrap stat");
- if (fs_init("metawrap", "test", NULL, &fs_set, &fs, &error) < 0)
+ if (fs_init("metawrap", "test", NULL, &fs_params, &fs, &error) < 0)
i_fatal("fs_init() failed: %s", error);
for (i = 0; i < 2; i++) {
const char *error;
test_begin("fs metawrap write empty file");
- if (fs_init("metawrap", "test", NULL, &fs_set, &fs, &error) < 0)
+ if (fs_init("metawrap", "test", NULL, &fs_params, &fs, &error) < 0)
i_fatal("fs_init() failed: %s", error);
struct fs_file *file = fs_file_init(fs, "foo", FS_OPEN_MODE_REPLACE);
struct ostream *output = fs_write_stream(file);
const char *error;
test_begin("fs metawrap write fname rename");
- if (fs_init("metawrap", "test", NULL, &fs_set, &fs, &error) < 0)
+ if (fs_init("metawrap", "test", NULL, &fs_params, &fs, &error) < 0)
i_fatal("fs_init() failed: %s", error);
struct fs_file *file = fs_file_init(fs, "foo", FS_OPEN_MODE_REPLACE);
struct ostream *output = fs_write_stream(file);
int ret;
const char *error;
struct fs *fs;
- struct fs_settings fs_set;
+ struct fs_parameters fs_params;
test_begin("test-fs-posix filesystem");
- i_zero(&fs_set);
+ i_zero(&fs_params);
ret = fs_init("posix", t_strdup_printf("prefix=%s/", testdir), NULL,
- &fs_set, &fs, &error);
+ &fs_params, &fs, &error);
test_out_quiet("fs_init() failed", ret >= 0);
if (ret < 0) {
test_end();
wants to use its own. */
if (storage->v.list_index_rebuild != NULL &&
storage->mailboxes_fs == NULL) {
- struct fs_settings fs_set;
+ struct fs_parameters fs_params;
const char *error;
- i_zero(&fs_set);
+ i_zero(&fs_params);
- mail_user_init_fs_settings(storage->user, &fs_set);
- if (fs_init("posix", "", storage->user->event, &fs_set,
+ mail_user_init_fs_settings(storage->user, &fs_params);
+ if (fs_init("posix", "", storage->user->event, &fs_params,
&storage->mailboxes_fs, &error) < 0) {
*error_r = t_strdup_printf("fs_init(posix) failed: %s", error);
storage->v.destroy(storage);
}
void mail_user_init_fs_settings(struct mail_user *user,
- struct fs_settings *fs_set)
+ struct fs_parameters *fs_params)
{
- fs_set->username = user->username;
- fs_set->session_id = user->session_id;
- fs_set->base_dir = user->set->base_dir;
- fs_set->temp_dir = user->set->mail_temp_dir;
- fs_set->enable_timing = user->stats_enabled;
+ fs_params->username = user->username;
+ fs_params->session_id = user->session_id;
+ fs_params->base_dir = user->set->base_dir;
+ fs_params->temp_dir = user->set->mail_temp_dir;
+ fs_params->enable_timing = user->stats_enabled;
}
static int
#include "process-stat.h"
struct module;
-struct fs_settings;
+struct fs_parameters;
struct ssl_iostream_settings;
struct master_service_anvil_session;
struct mail_user;
/* Import any event_ fields from userdb fields to mail user event. */
void mail_user_add_event_fields(struct mail_user *user);
-/* Initialize fs_settings from mail_user settings. */
+/* Initialize fs_parameters from mail_user settings. */
void mail_user_init_fs_settings(struct mail_user *user,
- struct fs_settings *fs_set);
+ struct fs_parameters *fs_set);
/* Try to mkdir() user's home directory. Ideally this should be called only
after the caller tries to create a file to the home directory, but it fails
const char *args, const char *root_dir,
struct fs **fs_r, const char **error_r)
{
- struct fs_settings fs_set;
+ struct fs_parameters fs_params;
struct mailbox_list_fs_context *ctx;
struct fs *parent_fs;
- i_zero(&fs_set);
- mail_user_init_fs_settings(list->ns->user, &fs_set);
- fs_set.root_path = root_dir;
- fs_set.temp_file_prefix = mailbox_list_get_global_temp_prefix(list);
+ i_zero(&fs_params);
+ mail_user_init_fs_settings(list->ns->user, &fs_params);
+ fs_params.root_path = root_dir;
+ fs_params.temp_file_prefix = mailbox_list_get_global_temp_prefix(list);
if (event_parent == NULL)
event_parent = list->ns->user->event;
- if (fs_init(driver, args, event_parent, &fs_set, fs_r, error_r) < 0)
+ if (fs_init(driver, args, event_parent, &fs_params, fs_r, error_r) < 0)
return -1;
/* add mailbox_list context to the parent fs, which allows
static int
fs_compress_init(struct fs *_fs, const char *args,
- struct event *event_parent, const struct fs_settings *set,
+ struct event *event_parent, const struct fs_parameters *params,
const char **error_r)
{
struct compress_fs *fs = COMPRESS_FS(_fs);
parent_name = t_strdup_until(args, parent_args);
parent_args++;
}
- return fs_init(parent_name, parent_args, event_parent, set,
+ return fs_init(parent_name, parent_args, event_parent, params,
&_fs->parent, error_r);
}
static int
fs_crypt_init(struct fs *_fs, const char *args, struct event *event_parent,
- const struct fs_settings *set, const char **error_r)
+ const struct fs_parameters *params, const char **error_r)
{
struct crypt_fs *fs = CRYPT_FS(_fs);
const char *enc_algo, *set_prefix;
parent_name = t_strdup_until(args, parent_args);
parent_args++;
}
- if (fs_init(parent_name, parent_args, event_parent, set,
+ if (fs_init(parent_name, parent_args, event_parent, params,
&_fs->parent, error_r) < 0)
return -1;
fs->enc_algo = i_strdup(enc_algo);
extern const struct fs fs_class_crypt;
-static struct fs_settings test_fs_set;
+static struct fs_parameters test_fs_params;
static void test_setup(void)
{
struct fs_file *file;
const char *error;
- test_fs_set.base_dir = ".";
- test_fs_set.temp_dir = ".";
+ test_fs_params.base_dir = ".";
+ test_fs_params.temp_dir = ".";
i_unlink_if_exists("test_public_key.pem");
i_unlink_if_exists("test_private_key.pem");
fs_class_register(&fs_class_posix);
fs_class_register(&fs_class_crypt);
- if (fs_init("posix", "", NULL, &test_fs_set, &fs, &error) < 0)
+ if (fs_init("posix", "", NULL, &test_fs_params, &fs, &error) < 0)
i_fatal("fs_init(posix) failed: %s", error);
/* write keys to disk */
file = fs_file_init(fs, "test_public_key.pem", FS_OPEN_MODE_CREATE);
if (fs_init("crypt", "public_key_path=test_public_key.pem:"
"private_key_path=test_private_key.pem:posix",
- NULL, &test_fs_set, &fs, &error) < 0)
+ NULL, &test_fs_params, &fs, &error) < 0)
i_fatal("fs_init(crypt:posix) failed: %s", error);
i_unlink_if_exists("test_file");
if (fs_init("crypt", "public_key_path=test_public_key.pem:"
"private_key_path=test_private_key.pem:posix",
- NULL, &test_fs_set, &fs, &error) < 0)
+ NULL, &test_fs_params, &fs, &error) < 0)
i_fatal("fs_init(crypt:posix) failed: %s", error);
i_unlink_if_exists("test_file");
if (fs_init("crypt", "public_key_path=:"
"private_key_path=test_private_key.pem:"
"maybe:posix",
- NULL, &test_fs_set, &fs, &error) < 0)
+ NULL, &test_fs_params, &fs, &error) < 0)
i_fatal("fs_init(crypt:posix) failed: %s", error);
i_unlink_if_exists("test_file");
if (fs_init("crypt", "public_key_path=test_public_key.pem:"
"private_key_path=test_private_key.pem:"
"maybe:posix",
- NULL, &test_fs_set, &fs, &error) < 0)
+ NULL, &test_fs_params, &fs, &error) < 0)
i_fatal("fs_init(crypt:posix) failed: %s", error);
i_unlink_if_exists("test_file");
int main(int argc, char *argv[])
{
- struct fs_settings set;
+ struct fs_parameters params;
struct test_ctx ctx;
const char *error;
unsigned int timeout_secs = 0;
ctx.max_parallel_ops = DEFAULT_MAX_PARALLEL_OPS;
ctx.files_count = DEFAULT_FILES_COUNT;
- i_zero(&set);
- set.base_dir = PKG_RUNDIR;
+ i_zero(¶ms);
+ params.base_dir = PKG_RUNDIR;
master_service = master_service_init("test-fs",
MASTER_SERVICE_FLAG_STANDALONE,
&argc, &argv, "Daf:p:st:u:");
ctx.sync_only = TRUE;
break;
case 'u':
- set.username = optarg;
+ params.username = optarg;
break;
case 't':
if (str_to_uint(optarg, &timeout_secs) < 0)
dict_drivers_register_builtin();
if (fs_init(argv[0], argv[1], master_service_get_event(master_service),
- &set, &ctx.fs, &error) < 0)
+ ¶ms, &ctx.fs, &error) < 0)
i_fatal("fs_init() failed: %s", error);
ctx.prefix = argv[2];