Diff

util/datamanager.lua @ 6997:0ab228bc21c6

util.datamanager: Handle potential issues from fallocate
author Kim Alvefur <zash@zash.se>
date Fri, 11 Dec 2015 20:24:36 +0100
parent 6996:644b1bddc676
child 6998:86607fe755b6
line wrap: on
line diff
--- a/util/datamanager.lua	Fri Dec 11 20:22:54 2015 +0100
+++ b/util/datamanager.lua	Fri Dec 11 20:24:36 2015 +0100
@@ -222,7 +222,16 @@
 	end
 	local pos = f:seek("end");
 	ok, msg = fallocate(f, pos, #data);
-	f:seek("set", pos);
+	if not ok then
+		log("warn", "fallocate() failed: %s", tostring(msg));
+		-- This doesn't work on every file system
+	end
+
+	if f:seek() ~= pos then
+		log("debug", "fallocate() changed file position");
+		f:seek("set", pos);
+	end
+
 	if ok then
 		f:write(data);
 	else