]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-fs: Optimize changing FS_METADATA_INTERNAL_PREFIX metadata.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 10 Oct 2016 21:46:59 +0000 (00:46 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 17 Oct 2016 20:11:14 +0000 (23:11 +0300)
file->metadata_changed doesn't need to change in that situation. It's used
by fs-metawrap to find out if it needs to rewrite metadata during a write,
but internal metadata isn't written to its header.

src/lib-fs/fs-api.c

index a49fd01814f655f6d587a117d80709b5cbe17b77..aa8591d6989b9f25d6d59b9504fb8b42971d792a 100644 (file)
@@ -330,7 +330,12 @@ void fs_set_metadata(struct fs_file *file, const char *key, const char *value)
 
        if (file->fs->v.set_metadata != NULL) T_BEGIN {
                file->fs->v.set_metadata(file, key, value);
-               file->metadata_changed = TRUE;
+               if (strncmp(key, FS_METADATA_INTERNAL_PREFIX,
+                           strlen(FS_METADATA_INTERNAL_PREFIX)) == 0) {
+                       /* internal metadata change, which isn't stored. */
+               } else {
+                       file->metadata_changed = TRUE;
+               }
        } T_END;
 }