Philippe Chevalier
2010-Jun-08 12:20 UTC
[Dovecot] ZFS Index corruption and Connection reset by peer
Hello, I'm currently using dovecot 1.2.11 on FreeBSD 8.0 with ZFS filesystems. So far, so good, it works quite nicely, but I have a couple glitches. Each user has his own zfs partition, mounted on /home/<user> (easier to set per user quotas) and mail is stored in their home. From day one, when people check their mail via imap, a lot of indexes corruption occured : dovecot: IMAP(<user>@domain.org): Corrupted transaction log file /home/<user>/Mail/Maildir/INBOX/dovecot.index.log seq 13: record size too small +(type=0x0, offset=5560, size=0) (sync_offset=5652) dovecot: IMAP(<user>@domain.org): fscking index file /home/<user>/Mail/Maildir/INBOX/dovecot.index dovecot: IMAP(<user>@domain.org): /home/<user>/Mail/Maildir/INBOX/dovecot.index log position went backwards (13,132 < 13,5560) dovecot: IMAP(<user>@domain.org): Transaction log file /home/<user>/Mail/Maildir/INBOX/dovecot.index.log: marked corrupted etc, etc... After some digging, I "solved" this problem with mmap_disable = yes in dovecot.conf. Index corruption doesn't seem to occur anymore. Is this normal? I thought this problem occured only on NFS filesystem and eventually on old versions of ZFS. Hasn't this been fixed? Is there an option in ZFS that would allow mmap calls without corruption. Has it something to do with compression ? The options of the zfs filesystem are : zhome/username type filesystem - zhome/username creation Thu Mar 18 11:10 2010 - zhome/username used 750M - zhome/username available 61.0G - zhome/username referenced 750M - zhome/username compressratio 1.20x - zhome/username mounted yes - zhome/username quota none default zhome/username reservation none default zhome/username recordsize 128K default zhome/username mountpoint /usr/home/username inherited from zhome zhome/username sharenfs off default zhome/username checksum on default zhome/username compression lzjb inherited from zhome zhome/username atime off inherited from zhome zhome/username devices on default zhome/username exec on default zhome/username setuid on default zhome/username readonly off default zhome/username jailed off default zhome/username snapdir hidden default zhome/username aclmode groupmask default zhome/username aclinherit restricted default zhome/username canmount on default zhome/username shareiscsi off default zhome/username xattr off temporary zhome/username copies 1 default zhome/username version 3 - zhome/username utf8only off - zhome/username normalization none - zhome/username casesensitivity sensitive - zhome/username vscan off default zhome/username nbmand off default zhome/username sharesmb off default zhome/username refquota none default zhome/username refreservation none default zhome/username primarycache all default zhome/username secondarycache all default zhome/username usedbysnapshots 0 - zhome/username usedbydataset 750M - zhome/username usedbychildren 0 - zhome/username usedbyrefreservation 0 - Other problem, that I have been unable to solve so far, is that a lot of entries show up in my logs about : dovecot: imap-login: net_disconnect() failed: Connection reset by peer It doesn't seem to have any adverse effect, except it's filling up the logs. It seem to appear when a client closes the imap connection? Is there a way to suppress this error? Regard P.C.
Timo Sirainen
2010-Jun-08 12:41 UTC
[Dovecot] ZFS Index corruption and Connection reset by peer
On ti, 2010-06-08 at 14:20 +0200, Philippe Chevalier wrote:> dovecot: IMAP(<user>@domain.org): Corrupted transaction log file /home/<user>/Mail/Maildir/INBOX/dovecot.index.log seq 13: record size too small +(type=0x0, offset=5560, size=0) (sync_offset=5652)..> After some digging, I "solved" this problem with mmap_disable = yes in > dovecot.conf. Index corruption doesn't seem to occur anymore. > > Is this normal? I thought this problem occured only on NFS filesystem > and eventually on old versions of ZFS. Hasn't this been fixed?Apparently it doesn't work perfectly..> Is there an option in ZFS that would allow mmap calls without > corruption. Has it something to do with compression ?I've no idea about ZFS.> Other problem, that I have been unable to solve so far, is that a lot of > entries show up in my logs about : > > dovecot: imap-login: net_disconnect() failed: Connection reset by peerThis means close() failed with: [ECONNRESET] The underlying object was a stream socket that was shut down by the peer before all pending data was delivered. This is the first time I've heard of this happening.. I see this shows up the first time in FreeBSD 6.3 man pages. Hmm. I don't like it. I guess I could work around it, but I think I'll first go complain about it to FreeBSD people.