Applied patch from Peter Colberg to remove usage of hard linking
Closes: #535160 Bug#535160: offlineimap fails on encfs (FUSE) due to hard linking Package: offlineimap Version: 6.0.3 Severity: normal Tags: patch Hi, if the localrepository is stored on an encfs, offlineimap fails as follows: OfflineIMAP 6.0.3 Copyright (C) 2002 - 2008 John Goerzen <jgoerzen@complete.org> This software comes with ABSOLUTELY NO WARRANTY; see the file COPYING for details. This is free software, and you are welcome to distribute it under the conditions laid out in COPYING. ***** Processing account pleione Copying folder structure from IMAP to Maildir Establishing connection to tunnel:eval `keychain --quiet --eval` && ssh -q mymailhost /usr/sbin/dovecot --exec-mail imap. Syncing Drafts: IMAP -> Maildir Syncing INBOX: IMAP -> Maildir ----------8<---------- Syncing net: IMAP -> Maildir Copy message 360 IMAP[net] -> Maildir[net], LocalStatus[net] Syncing personal: IMAP -> Maildir Thread 'Copy message 360 from net' terminated with exception: Traceback (most recent call last): File "/var/lib/python-support/python2.4/offlineimap/threadutil.py", line 149, in run Thread.run(self) File "threading.py", line 422, in run self.__target(*self.__args, **self.__kwargs) File "/var/lib/python-support/python2.4/offlineimap/folder/Base.py", line 282, in copymessageto newuid = object.savemessage(uid, message, flags, rtime) File "/var/lib/python-support/python2.4/offlineimap/folder/Maildir.py", line 198, in savemessage os.path.join(tmpdir, messagename)) OSError: [Errno 1] Operation not permitted Last 4 debug messages logged for Copy message 360 from net prior to exception: ----------8<---------- As encfs does not support hard linking, the rename of the temporary message file fails. This is the only occurrence of hard linking in offlineimap and can be fixed by using an atomic `os.rename` instead of `os.link`+`os.unlink`. I have been using the attached patch for more than 1.5 years and have never again had any problems with offlineimap on encfs. Regards, Peter
This commit is contained in:
parent
0a221dc9c5
commit
3299b2240c
@ -199,9 +199,8 @@ class MaildirFolder(BaseFolder):
|
|||||||
ui.debug('maildir', 'savemessage: moving from %s to %s' % \
|
ui.debug('maildir', 'savemessage: moving from %s to %s' % \
|
||||||
(tmpmessagename, messagename))
|
(tmpmessagename, messagename))
|
||||||
if tmpmessagename != messagename: # then rename it
|
if tmpmessagename != messagename: # then rename it
|
||||||
os.link(os.path.join(tmpdir, tmpmessagename),
|
os.rename(os.path.join(tmpdir, tmpmessagename),
|
||||||
os.path.join(tmpdir, messagename))
|
os.path.join(tmpdir, messagename))
|
||||||
os.unlink(os.path.join(tmpdir, tmpmessagename))
|
|
||||||
|
|
||||||
if self.dofsync:
|
if self.dofsync:
|
||||||
try:
|
try:
|
||||||
|
Loading…
Reference in New Issue
Block a user