import arvados.commands._util as arv_cmd
from arvados_fuse import *
from arvados.safeapi import ThreadSafeApiCache
+import arvados.keep
logger = logging.getLogger('arvados.arv-mount')
parser.add_argument('--foreground', action='store_true', help="""Run in foreground (default is to daemonize unless --exec specified)""", default=False)
parser.add_argument('--encoding', type=str, help="Character encoding to use for filesystem, default is utf-8 (see Python codec registry for list of available encodings)", default="utf-8")
- parser.add_argument('--inode-cache', type=int, help="Inode cache size", default=1024)
+ parser.add_argument('--file-cache', type=int, help="File data cache size, in bytes (default 256MiB)", default=256*1024*1024)
+ parser.add_argument('--directory-cache', type=int, help="Directory data cache size, in bytes (default 128MiB)", default=128*1024*1024)
parser.add_argument('--exec', type=str, nargs=argparse.REMAINDER,
dest="exec_args", metavar=('command', 'args', '...', '--'),
try:
# Create the request handler
- operations = Operations(os.getuid(), os.getgid(), args.encoding, args.inode_cache)
- api = ThreadSafeApiCache(arvados.config.settings())
+ operations = Operations(os.getuid(),
+ os.getgid(),
+ encoding=args.encoding,
+ inode_cache=InodeCache(cap=args.directory_cache))
+ api = ThreadSafeApiCache(apiconfig=arvados.config.settings(),
+ keep_params={"block_cache": arvados.keep.KeepBlockCache(args.file_cache)})
usr = api.users().current().execute(num_retries=args.retries)
now = time.time()
opts = [optname for optname in ['allow_other', 'debug']
if getattr(args, optname)]
+ # Increase default read/write size from 4KiB to 128KiB
+ opts += ["big_writes", "max_read=131072"]
+
if args.exec_args:
# Initialize the fuse connection
llfuse.init(operations, args.mountpoint, opts)
+ # Subscribe to change events from API server
+ operations.listen_for_events(api)
+
t = threading.Thread(None, lambda: llfuse.main())
t.start()
else:
try:
llfuse.init(operations, args.mountpoint, opts)
+
+ # Subscribe to change events from API server
+ operations.listen_for_events(api)
+
llfuse.main()
except Exception as e:
logger.exception('arv-mount: exception during mount')