summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--DEVELOPERNOTES8
-rw-r--r--vdrnfofs/vdrnfofs.py1
2 files changed, 9 insertions, 0 deletions
diff --git a/DEVELOPERNOTES b/DEVELOPERNOTES
new file mode 100644
index 0000000..b990dd4
--- /dev/null
+++ b/DEVELOPERNOTES
@@ -0,0 +1,8 @@
+Fuse might call read(...) on the file class from multiple threads, causing
+a race condition with the underlying seek/read operations.
+
+Using locking here seems to make the file access slower, than just disabling
+the multithreading in Fuse with fs.multithreading = False.
+
+A thread-local storage doesn't help either, because Fuse doesn't seem to
+reuse threads, but might create new threads for each read operation.
diff --git a/vdrnfofs/vdrnfofs.py b/vdrnfofs/vdrnfofs.py
index db3a247..67a44e1 100644
--- a/vdrnfofs/vdrnfofs.py
+++ b/vdrnfofs/vdrnfofs.py
@@ -147,6 +147,7 @@ def main():
version = "%prog " + fuse.__version__
fs = VdrNfoFs(version=version, usage=usage, dash_s_do='setsingle')
+ fs.multithreaded = False
fs.parser.add_option(mountopt="video", default='', help="The video directory containing the VDR recordings")
fs.parser.add_option(mountopt="log", default='', help="The log file (default = console)")
fs.parser.add_option(mountopt="loglevel", default='info', help="The log level (debug, info, warning or error)")