]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fs-metawrap: Implement new init() API
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 28 Jul 2023 12:52:28 +0000 (15:52 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:10 +0000 (12:34 +0200)
src/lib-fs/fs-metawrap.c

index ff0afd91befca6a4a433b68a08a5a277af361c6f..f7b8bcf02d02e31f2ec9e1071757b5bb2cc9ed23 100644 (file)
@@ -46,8 +46,21 @@ static struct fs *fs_metawrap_alloc(void)
 }
 
 static int
-fs_metawrap_init(struct fs *_fs, const char *args,
-                const struct fs_parameters *params, const char **error_r)
+fs_metawrap_init(struct fs *_fs, const struct fs_parameters *params,
+                const char **error_r)
+{
+       struct metawrap_fs *fs = METAWRAP_FS(_fs);
+       if (fs_init_parent(_fs, params, error_r) < 0)
+               return -1;
+       if ((fs_get_properties(_fs->parent) & FS_PROPERTY_METADATA) == 0)
+               fs->wrap_metadata = TRUE;
+       return 0;
+}
+
+static int
+fs_metawrap_legacy_init(struct fs *_fs, const char *args,
+                       const struct fs_parameters *params,
+                       const char **error_r)
 {
        struct metawrap_fs *fs = METAWRAP_FS(_fs);
        const char *parent_name, *parent_args;
@@ -499,7 +512,8 @@ const struct fs fs_class_metawrap = {
        .name = "metawrap",
        .v = {
                .alloc = fs_metawrap_alloc,
-               .legacy_init = fs_metawrap_init,
+               .init = fs_metawrap_init,
+               .legacy_init = fs_metawrap_legacy_init,
                .deinit = NULL,
                .free = fs_metawrap_free,
                .get_properties = fs_metawrap_get_properties,