X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/96f5b2d78c60d1a16f51a269270d180b3f9a60a3..3dfc071494cbb0386ecd7269c72a435fc7f9cc24:/services/fuse/arvados_fuse/__init__.py diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py index e40b88ce9e..c261bc3197 100644 --- a/services/fuse/arvados_fuse/__init__.py +++ b/services/fuse/arvados_fuse/__init__.py @@ -728,12 +728,13 @@ class Operations(llfuse.Operations): so request handlers do not run concurrently unless the lock is explicitly released using "with llfuse.lock_released:"''' - def __init__(self, uid, gid): + def __init__(self, uid, gid, encoding="utf-8"): super(Operations, self).__init__() self.inodes = Inodes() self.uid = uid self.gid = gid + self.encoding = encoding # dict of inode to filehandle self._filehandles = {} @@ -785,6 +786,7 @@ class Operations(llfuse.Operations): return entry def lookup(self, parent_inode, name): + name = unicode(name, self.encoding) _logger.debug("arv-mount lookup: parent_inode %i name %s", parent_inode, name) inode = None @@ -882,7 +884,10 @@ class Operations(llfuse.Operations): e = off while e < len(handle.entry): if handle.entry[e][1].inode in self.inodes: - yield (handle.entry[e][0], self.getattr(handle.entry[e][1].inode), e+1) + try: + yield (handle.entry[e][0].encode(self.encoding), self.getattr(handle.entry[e][1].inode), e+1) + except UnicodeEncodeError: + pass e += 1 def releasedir(self, fh):