changeset 20878:4c1924b74356

lib-fs: Optimize changing FS_METADATA_INTERNAL_PREFIX metadata. 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.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 11 Oct 2016 00:46:59 +0300
parents 20b4ec6e8e6d
children c9e32ef49048
files src/lib-fs/fs-api.c
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-fs/fs-api.c	Mon Oct 17 12:41:33 2016 +0300
+++ b/src/lib-fs/fs-api.c	Tue Oct 11 00:46:59 2016 +0300
@@ -330,7 +330,12 @@
 
 	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;
 }