changeset 18857:bd1dabfcfae3

fs-metawrap: If written file unexpectedly shrinks, return error instead of assert-crash. This shouldn't be happening, but we can't fully control it so an error is better.
author Timo Sirainen <tss@iki.fi>
date Mon, 15 Jun 2015 14:51:46 +0300
parents db8877fdd39f
children 8bde19f080ad
files src/lib-fs/fs-metawrap.c
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-fs/fs-metawrap.c	Mon Jun 15 14:49:46 2015 +0300
+++ b/src/lib-fs/fs-metawrap.c	Mon Jun 15 14:51:46 2015 +0300
@@ -457,7 +457,14 @@
 		/* fs_stat() after a write. we can do this quickly. */
 		if (fs_stat(file->super, st_r) < 0)
 			return -1;
-		i_assert((uoff_t)st_r->st_size >= file->metadata_write_size);
+		if ((uoff_t)st_r->st_size < file->metadata_write_size) {
+			fs_set_error(_file->fs,
+				"Just-written %s shrank unexpectedly "
+				"(%"PRIuUOFF_T" < %"PRIuUOFF_T")",
+				fs_file_path(_file), st_r->st_size,
+				file->metadata_write_size);
+			return -1;
+		}
 		st_r->st_size -= file->metadata_write_size;
 		return 0;
 	}