diff options
author | Kim Alvefur <zash@zash.se> | 2015-12-11 20:24:36 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2015-12-11 20:24:36 +0100 |
commit | be1b771edf344615e31f310259b2793c95c1d217 (patch) | |
tree | 0d3e34d019b95724892a06cee3aafe30564c9b73 | |
parent | 74500e9b505da0bee52b7f03d3372b90a09c5b50 (diff) | |
download | prosody-be1b771edf344615e31f310259b2793c95c1d217.tar.gz prosody-be1b771edf344615e31f310259b2793c95c1d217.zip |
util.datamanager: Handle potential issues from fallocate
-rw-r--r-- | util/datamanager.lua | 11 |
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 |