Attached is the log file for a failed unmount.
While my previous attempts were simple umount.s3ql commands, this time a couple of additional commands were run after rsync completed and before the umount:
s3qlctrl flushcache /media/server-external s3qlctrl upload-meta /media/server-external umount.s3ql /media/server-externalNone displayed any errors at the command line level, but the end result was the same, next mount attempt indicated:
File system damaged or not unmounted cleanly, run fsck! Regards, Shannon C. Dealy | DeaTech Research Inc. de...@deatech.com | - Custom Software Development - USA Phone: +1 800-467-5820 | - Natural Building Instruction - numbers : +1 541-929-4089 | www.deatech.com
2014-12-04 13:14:27.483 13515:MainThread (name)s.determine_threads: Using 8 upload threads. 2014-12-04 13:14:27.487 13515:MainThread (name)s.main: Autodetected 4040 file descriptors available for cache entries 2014-12-04 13:14:41.599 13515:MainThread (name)s.get_metadata: Ignoring locally cached metadata (outdated). 2014-12-04 13:14:42.226 13515:MainThread (name)s.get_metadata: Downloading and decompressing metadata... 2014-12-04 13:23:26.960 13515:MainThread (name)s.get_metadata: Reading metadata... 2014-12-04 13:23:26.965 13515:MainThread (name)s.restore_metadata: ..objects.. 2014-12-04 13:23:34.746 13515:MainThread (name)s.restore_metadata: ..blocks.. 2014-12-04 13:24:10.699 13515:MainThread (name)s.restore_metadata: ..inodes.. 2014-12-04 13:25:01.822 13515:MainThread (name)s.restore_metadata: ..inode_blocks.. 2014-12-04 13:26:16.473 13515:MainThread (name)s.restore_metadata: ..symlink_targets.. 2014-12-04 13:26:19.260 13515:MainThread (name)s.restore_metadata: ..names.. 2014-12-04 13:26:46.256 13515:MainThread (name)s.restore_metadata: ..contents.. 2014-12-04 13:29:10.849 13515:MainThread (name)s.restore_metadata: ..ext_attributes.. 2014-12-04 13:29:30.511 13515:MainThread (name)s.main: Setting cache size to 42007 MB 2014-12-04 13:29:30.513 13515:MainThread (name)s.main: Mounting filesystem... 2014-12-04 13:29:30.535 13870:MainThread (name)s.detach_process_context: Daemonizing, new PID is 13874 2014-12-04 15:01:30.236 13874:Metadata-Upload-Thread (name)s.run: Dumping metadata... 2014-12-04 15:01:30.240 13874:Metadata-Upload-Thread (name)s.dump_metadata: ..objects.. 2014-12-04 15:01:33.701 13874:Metadata-Upload-Thread (name)s.dump_metadata: ..blocks.. 2014-12-04 15:01:40.118 13874:Metadata-Upload-Thread (name)s.dump_metadata: ..inodes.. 2014-12-04 15:02:22.569 13874:Metadata-Upload-Thread (name)s.dump_metadata: ..inode_blocks.. 2014-12-04 15:02:45.095 13874:Metadata-Upload-Thread (name)s.dump_metadata: ..symlink_targets.. 2014-12-04 15:02:45.892 13874:Metadata-Upload-Thread (name)s.dump_metadata: ..names.. 2014-12-04 15:02:48.911 13874:Metadata-Upload-Thread (name)s.dump_metadata: ..contents.. 2014-12-04 15:03:16.247 13874:Metadata-Upload-Thread (name)s.dump_metadata: ..ext_attributes.. 2014-12-04 15:03:17.194 13874:Metadata-Upload-Thread (name)s.run: Compressing and uploading metadata... 2014-12-04 15:06:19.607 13874:Metadata-Upload-Thread (name)s.run: Wrote 101 MiB of compressed metadata. 2014-12-04 15:06:19.609 13874:Metadata-Upload-Thread (name)s.run: Cycling metadata backups... 2014-12-04 15:06:19.609 13874:Metadata-Upload-Thread (name)s.cycle_metadata: Backing up old metadata... 2014-12-04 15:07:34.506 13874:Dummy-22 (name)s.stacktrace: # ThreadID: 140728286045952 pyapi.py:504, in stacktrace for filename, lineno, name, line in traceback.extract_stack(frame): # ThreadID: 140728294438656 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729826797312 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:399, in _upload_loop tmp = self.to_upload.get() block_cache.py:97, in get self.cv.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140728831309568 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140728822916864 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729410111232 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729384933120 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729793226496 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:399, in _upload_loop tmp = self.to_upload.get() block_cache.py:97, in get self.cv.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729918973696 mount.s3ql:9, in <module> load_entry_point('s3ql==2.11.1', 'console_scripts', 'mount.s3ql')() mount.py:215, in main llfuse.main(options.single) # ThreadID: 140729435289344 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:399, in _upload_loop tmp = self.to_upload.get() block_cache.py:97, in get self.cv.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729818404608 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:399, in _upload_loop tmp = self.to_upload.get() block_cache.py:97, in get self.cv.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729784833792 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:399, in _upload_loop tmp = self.to_upload.get() block_cache.py:97, in get self.cv.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729801619200 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:399, in _upload_loop tmp = self.to_upload.get() block_cache.py:97, in get self.cv.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140728797738752 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729393325824 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140728806131456 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729418503936 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729426896640 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:399, in _upload_loop tmp = self.to_upload.get() block_cache.py:97, in get self.cv.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729810011904 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:399, in _upload_loop tmp = self.to_upload.get() block_cache.py:97, in get self.cv.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140728789346048 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) mount.py:698, in run cycle_metadata(backend) metadata.py:121, in cycle_metadata cycle_fn("s3ql_metadata_bak_%d" % i, "s3ql_metadata_bak_%d" % (i + 1)) comprenc.py:290, in copy self._copy_or_rename(src, dest, rename=False, metadata=metadata) comprenc.py:323, in _copy_or_rename self.backend.copy(src, dest, metadata=meta_raw) local.py:194, in copy shutil.copyfileobj(src, dest, BUFSIZE) shutil.py:66, in copyfileobj buf = fsrc.read(length) # ThreadID: 140728780953344 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) mount.py:799, in run self.stop_event.wait(5) threading.py:553, in wait signaled = self._cond.wait(timeout) threading.py:294, in wait gotit = waiter.acquire(True, timeout) # ThreadID: 140728814524160 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() # ThreadID: 140729401718528 threading.py:888, in _bootstrap self._bootstrap_inner() threading.py:920, in _bootstrap_inner self.run() mount.py:66, in run_with_except_hook run_old(*args, **kw) threading.py:868, in run self._target(*self._args, **self._kwargs) block_cache.py:677, in _removal_loop tmp = self.to_remove.get(block=len(ids)==0) queue.py:167, in get self.not_empty.wait() threading.py:290, in wait waiter.acquire() 2014-12-04 15:08:22.853 13874:MainThread (name)s.main: FUSE main loop terminated. 2014-12-04 16:22:27.877 13874:MainThread (name)s.unmount: Unmounting file system... 2014-12-04 16:22:27.887 13874:MainThread (name)s.excepthook: Uncaught top-level exception: Traceback (most recent call last): File "/usr/bin/mount.s3ql", line 9, in <module> load_entry_point('s3ql==2.11.1', 'console_scripts', 'mount.s3ql')() File "/usr/lib/s3ql/s3ql/mount.py", line 230, in main unmount_clean = True File "/usr/lib/python3.4/contextlib.py", line 336, in __exit__ raise exc_details[1] File "/usr/lib/python3.4/contextlib.py", line 321, in __exit__ if cb(*exc_details): File "/usr/lib/python3.4/contextlib.py", line 267, in _exit_wrapper callback(*args, **kwds) File "/usr/lib/s3ql/s3ql/block_cache.py", line 390, in destroy os.rmdir(self.path) OSError: [Errno 39] Directory not empty: '/root/.s3ql/local:=2F=2F=2Fmedia=2FTransferDrive=2FS3QL_server-external-cache'