]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-fs: Set internal fs/file/iter pointers to events
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 29 Nov 2019 13:30:46 +0000 (15:30 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Wed, 11 Dec 2019 10:12:30 +0000 (10:12 +0000)
This will be used by the following commit

src/lib-fs/fs-api-private.h
src/lib-fs/fs-api.c

index 2881856198f65434a4e769cf202c65fd1bcfae74..85294646d6fb1911b4f21ca6aed129565dd2844a 100644 (file)
@@ -7,6 +7,10 @@
 
 #include <sys/time.h>
 
+#define FS_EVENT_FIELD_FS "lib-fs#fs"
+#define FS_EVENT_FIELD_FILE "lib-fs#file"
+#define FS_EVENT_FIELD_ITER "lib-fs#iter"
+
 struct fs_api_module_register {
        unsigned int id;
 };
index a9a1dd98e4aec720c623c743b9cc61f39ad57e7e..390e93277c2bd3ac973ceccf022e315f2a196aa0 100644 (file)
@@ -161,6 +161,7 @@ int fs_init(const char *driver, const char *args,
        if (fs_alloc(fs_class, args, set, fs_r, error_r) < 0)
                return -1;
        (*fs_r)->event = fs_create_event(*fs_r, set->event);
+       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";
@@ -271,6 +272,8 @@ struct fs_file *fs_file_init_with_event(struct fs *fs, struct event *event,
                file->fs = fs;
                file->flags = mode_flags & ~FS_OPEN_MODE_MASK;
                file->event = fs_create_event(fs, event);
+               event_set_ptr(file->event, FS_EVENT_FIELD_FS, fs);
+               event_set_ptr(file->event, FS_EVENT_FIELD_FILE, file);
                fs->v.file_init(file, path, mode_flags & FS_OPEN_MODE_MASK,
                                mode_flags & ~FS_OPEN_MODE_MASK);
        } T_END;
@@ -1141,6 +1144,8 @@ fs_iter_init_with_event(struct fs *fs, struct event *event,
                iter->fs = fs;
                iter->flags = flags;
                iter->event = fs_create_event(fs, event);
+               event_set_ptr(iter->event, FS_EVENT_FIELD_FS, fs);
+               event_set_ptr(iter->event, FS_EVENT_FIELD_ITER, iter);
                fs->v.iter_init(iter, path, flags);
        } T_END;
        iter->start_time = now;