X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b629d9e88ad0c6e62018a8fb4768013975eccc70..8171328873751d5bfd47cd9da3f6ff9a66c84659:/services/fuse/arvados_fuse/fusefile.py diff --git a/services/fuse/arvados_fuse/fusefile.py b/services/fuse/arvados_fuse/fusefile.py index 1b12d7e410..45d3db16fe 100644 --- a/services/fuse/arvados_fuse/fusefile.py +++ b/services/fuse/arvados_fuse/fusefile.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0 from __future__ import absolute_import +from builtins import bytes import json import llfuse import logging @@ -49,11 +50,12 @@ class File(FreshBase): class FuseArvadosFile(File): """Wraps a ArvadosFile.""" - __slots__ = ('arvfile',) + __slots__ = ('arvfile', '_enable_write') - def __init__(self, parent_inode, arvfile, _mtime): + def __init__(self, parent_inode, arvfile, _mtime, enable_write): super(FuseArvadosFile, self).__init__(parent_inode, _mtime) self.arvfile = arvfile + self._enable_write = enable_write def size(self): with llfuse.lock_released: @@ -71,7 +73,7 @@ class FuseArvadosFile(File): return False def writable(self): - return self.arvfile.writable() + return self._enable_write and self.arvfile.writable() def flush(self): with llfuse.lock_released: @@ -89,7 +91,7 @@ class StringFile(File): return len(self.contents) def readfrom(self, off, size, num_retries=0): - return self.contents[off:(off+size)] + return bytes(self.contents[off:(off+size)], encoding='utf-8') class ObjectFile(StringFile):