On Wed, 2011-05-11 at 20:02 +0800, Peter Bell wrote:
Possibly more concerning is this message: May 10 23:31:23 imap(peter): Error: link(/mnt/user/Maildir/peter/dovecot.index.log, /mnt/user/Maildir/peter/dovecot.index.log.2) failed: Function not implemented
So apparently your fuse filesystem doesn't support link().
That is correct. This system is, essentially, a parity-protected file server, with logical file space which spans physical devices. However, the big benefit of the system is that, unlike most RAID configurations, each physical drive can be mounted individually and the filesystem (ReiserFS) written/read in isolation. I suspect that, technically, it would be possible to add link(), but I guess that the conflation of stand-alone drive/logical spanning makes it a little complex. I will try starting a discussion on this topic over on the 'other' forum.
One directory's all files are probably in one filesystem, so link() within a single directory should be simple to implement I think? That's all Dovecot needs.
I'm not sure exactly what I was doing at the time - probably experimenting with Sieve filters. Has this compromised my maildir? I have already disabled copy with hard links - is there another 'hardlink' setting available?
Nope. I don't remember what all places uses link(), but looks like at least copying .log to .log.2 file. It doesn't really matter if it fails though.
Okay, so I'm guessing that this is simply a rollover log file - one file, reaching a certain size is renamed [linked], and a new log file started?
Right. Not having a .log.2 mainly affects things like dsync and QRESYNC extension.
When I have a little spare time I may try grepping the Dovecot code.
there are link() and nfs_safe_link() calls.