aboutsummaryrefslogtreecommitdiffstats
path: root/util/datamanager.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2015-12-11 20:24:36 +0100
committerKim Alvefur <zash@zash.se>2015-12-11 20:24:36 +0100
commitbe1b771edf344615e31f310259b2793c95c1d217 (patch)
tree0d3e34d019b95724892a06cee3aafe30564c9b73 /util/datamanager.lua
parent74500e9b505da0bee52b7f03d3372b90a09c5b50 (diff)
downloadprosody-be1b771edf344615e31f310259b2793c95c1d217.tar.gz
prosody-be1b771edf344615e31f310259b2793c95c1d217.zip
util.datamanager: Handle potential issues from fallocate
Diffstat (limited to 'util/datamanager.lua')
-rw-r--r--util/datamanager.lua11
1 files changed, 10 insertions, 1 deletions
diff --git a/util/datamanager.lua b/util/datamanager.lua
index 786abd95..3016feed 100644
--- a/util/datamanager.lua
+++ b/util/datamanager.lua
@@ -222,7 +222,16 @@ local function append(username, host, datastore, ext, data)
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