24 Jan
2007
24 Jan
'07
9:12 p.m.
On Wed, 2007-01-24 at 18:53 +0000, pod wrote:
TS> - create tmp file TS> - link() to .lock file TS> - unlink tmp file TS> - write to .lock file TS> - rename() to destination file
I think the problem here is that the rename will return EXDEV in a cross-directory situation if the file in question is also being held open.
Except that Dovecot doesn't do cross-directory link()s or rename()s here. They're all in the same directory and they still apparently don't work.
If anything returned EXDEV, it would be logged as error and Dovecot would give internal failure. Now it's just silently creating empty files without any syscalls giving errors.