[ARVADOS] updated: 61e04bd283799308728e9c0bf085db799bd9cbc2
git at public.curoverse.com
git at public.curoverse.com
Tue Feb 18 10:58:39 EST 2014
Summary of changes:
sdk/python/bin/arv-mount2 | 84 +++++++++++++++++---------------------------
1 files changed, 33 insertions(+), 51 deletions(-)
via 61e04bd283799308728e9c0bf085db799bd9cbc2 (commit)
from c2459c6593b1508ad01f64c4a6f91b70b3d80c89 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 61e04bd283799308728e9c0bf085db799bd9cbc2
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Tue Feb 18 10:59:40 2014 -0500
Working on fuse mount
diff --git a/sdk/python/bin/arv-mount2 b/sdk/python/bin/arv-mount2
index c0bdbd2..74683af 100755
--- a/sdk/python/bin/arv-mount2
+++ b/sdk/python/bin/arv-mount2
@@ -58,7 +58,7 @@ class Operations(llfuse.Operations):
# dict of inodes to collection entry
self._inodes = {}
- i = 1
+ i = llfuse.ROOT_INODE
self.root = Directory(i, i)
self._inodes[i] = self.root
@@ -78,7 +78,6 @@ class Operations(llfuse.Operations):
# dict of inode to filehandle
self._filehandles = {}
- self._filehandles_lock = threading.Lock()
self._filehandles_counter = 1
def access(self, inode, mode, ctx):
@@ -139,36 +138,28 @@ class Operations(llfuse.Operations):
else:
raise llfuse.FUSEError(errno.ENOENT)
- self._filehandles_lock.acquire()
- try:
- fh = self._filehandles_counter
- self._filehandles_counter += 1
- self._filehandles[fh] = FileHandle(fh, p)
- return fh
- finally:
- self._filehandles_lock.release()
+ if isinstance(p, Directory):
+ raise llfuse.FUSEError(errno.EISDIR)
+
+ fh = self._filehandles_counter
+ self._filehandles_counter += 1
+ self._filehandles[fh] = FileHandle(fh, p)
+ return fh
def read(self, fh, off, size):
- self._filehandles_lock.acquire()
- try:
- if fh in self._filehandles:
- handle = self._filehandles[fh]
- else:
- raise llfuse.FUSEError(errno.EBADF)
- finally:
- self._filehandles_lock.release()
-
- try:
- return handle.entry.reader.readfrom(off, size)
- except:
- raise llfuse.FUSEError(errno.EPIPE)
+ if fh in self._filehandles:
+ handle = self._filehandles[fh]
+ else:
+ raise llfuse.FUSEError(errno.EBADF)
+
+ with llfuse.lock_released:
+ try:
+ return handle.entry.reader.readfrom(off, size)
+ except:
+ raise llfuse.FUSEError(errno.EIO)
def release(self, fh):
- self._filehandles_lock.acquire()
- try:
- del self._filehandles[fh]
- finally:
- self._filehandles_lock.release()
+ del self._filehandles[fh]
def opendir(self, inode):
#print "opendir: inode", inode
@@ -178,26 +169,21 @@ class Operations(llfuse.Operations):
else:
raise llfuse.FUSEError(errno.ENOENT)
- self._filehandles_lock.acquire()
- try:
- fh = self._filehandles_counter
- self._filehandles_counter += 1
- self._filehandles[fh] = FileHandle(fh, list(p.entries.items()))
- return fh
- finally:
- self._filehandles_lock.release()
+ if not isinstance(p, Directory):
+ raise llfuse.FUSEError(errno.ENOTDIR)
+
+ fh = self._filehandles_counter
+ self._filehandles_counter += 1
+ self._filehandles[fh] = FileHandle(fh, [('.', p), ('..', self._inodes[p.parent])] + list(p.entries.items()))
+ return fh
def readdir(self, fh, off):
#print "readdir: fh", fh, "off", off
- self._filehandles_lock.acquire()
- try:
- if fh in self._filehandles:
- handle = self._filehandles[fh]
- else:
- raise llfuse.FUSEError(errno.EBADF)
- finally:
- self._filehandles_lock.release()
+ if fh in self._filehandles:
+ handle = self._filehandles[fh]
+ else:
+ raise llfuse.FUSEError(errno.EBADF)
#print "handle.entry", handle.entry
@@ -207,11 +193,7 @@ class Operations(llfuse.Operations):
e += 1
def releasedir(self, fh):
- self._filehandles_lock.acquire()
- try:
- del self._filehandles[fh]
- finally:
- self._filehandles_lock.release()
+ del self._filehandles[fh]
if __name__ == '__main__':
@@ -226,13 +208,13 @@ if __name__ == '__main__':
args = parser.parse_args()
# for testing only!
- manifest = open('/home/tetron/work/arvados/sdk/python/testdata/jlake_manifest').read()
+ manifest = open('/home/peter/work/arvados/sdk/python/testdata/jlake_manifest').read()
operations = Operations(arvados.CollectionReader(manifest))
#operations = Operations(arvados.CollectionReader(arvados.Keep.get(args.collection)))
- llfuse.init(operations, args.mountpoint, [ b'fsname=keepfuse' ])
+ llfuse.init(operations, args.mountpoint, [ b'fsname=keepfuse', 'debug' ])
try:
llfuse.main()
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list