Project

General

Profile

Actions

Story #12308

open

[FUSE] Golang-based fuse driver

Added by Tom Clegg about 7 years ago. Updated almost 2 years ago.

Status:
In Progress
Priority:
Normal
Assigned To:
Category:
FUSE
Target version:
-
Start date:
09/22/2017
Due date:
% Done:

100%

Estimated time:
(Total: 0.00 h)
Story points:
-
Release:
Release relationship:
Auto

Description

Background:

Python+llfuse was expedient and has done lots of good work for us, but it's not promising as a long term (fast+reliable+maintainable) solution.

Implementation: TBD:
  • Approach for handling websocket "update" events
  • Selectable mechanisms/options for syncing to server (fflush, fsync, close) (on a shell node, flush-on-close, flush-periodically, or flush-after-idle-time might be best; in crunch-run, flush-on-exit might be best)
  • Desired behavior when updates conflict (write error? clobber? create "oops,clobbered" file?)
Other current bugs/limitations:
  • Old keep block signatures don't get refreshed, so reading a collection that's been cached for too long returns an I/O error
  • Not command-line compatible with arv-mount
  • Logging is not great
  • No docs
  • No way to control overall cache size (currently collectionfs can use lots of RAM in certain non-sequential write scenarios; we need the ability to trade speed for space efficiency in memory-constrained environments)
  • No warnings given when cache is thrashing
  • No application level instrumentation (just optional Go pprof)
  • Special .arvados#collection file is incomplete (has manifest_text but not uuid, pdh)
  • No automatic flush on sigint/sigterm
  • No warning given when trying to exit but filesystem can't be unmounted yet (filehandle is open, or a process's cwd is in the mount)
  • Mac port has a race bug (see notes below)
  • Windows port is untested
  • Cross-compiling recipe for Mac/Windows ports is fragile
  • chmod is a no-op (chmod 0700 succeeds, but the file mode will still be 0755)

Subtasks 1 (0 open1 closed)

Task #16098: Review 12308-cgofuseResolvedTom Clegg09/22/2017

Actions

Related issues 6 (2 open4 closed)

Related to Arvados - Feature #12876: [CLI] arvados-client command-line toolResolvedTom Clegg

Actions
Related to Arvados Epics - Story #16082: Port client tools to GoNew06/01/202312/31/2023

Actions
Related to Arvados - Bug #16727: [FUSE] [cgofuse] Refresh signatures / reload collection instead of using expired blob signaturesResolvedTom Clegg01/27/2022

Actions
Related to Arvados Epics - Story #17849: FUSE driver v2New03/01/202307/31/2023

Actions
Blocked by Arvados - Story #10996: [SDK] Writable file-like interface for collections in Go SDKResolvedTom Clegg

Actions
Blocked by Arvados - Bug #11249: [SDKs] Writable collection files returned by Go SDK should be seekableResolvedTom Clegg

Actions
Actions

Also available in: Atom PDF