mirror of https://github.com/borgbackup/borg.git
use the RepositoryCache context manager also in fuse code
This commit is contained in:
parent
4d73f3cdb9
commit
5ec2a3a49b
|
@ -30,7 +30,7 @@ from .repository import Repository
|
|||
from .cache import Cache
|
||||
from .key import key_creator
|
||||
from .archive import Archive, ArchiveChecker, CHUNKER_PARAMS
|
||||
from .remote import RepositoryServer, RemoteRepository
|
||||
from .remote import RepositoryServer, RemoteRepository, cache_if_remote
|
||||
|
||||
has_lchflags = hasattr(os, 'lchflags')
|
||||
|
||||
|
@ -380,18 +380,19 @@ class Archiver:
|
|||
|
||||
repository = self.open_repository(args)
|
||||
try:
|
||||
manifest, key = Manifest.load(repository)
|
||||
if args.location.archive:
|
||||
archive = Archive(repository, key, manifest, args.location.archive)
|
||||
else:
|
||||
archive = None
|
||||
operations = FuseOperations(key, repository, manifest, archive)
|
||||
logger.info("Mounting filesystem")
|
||||
try:
|
||||
operations.mount(args.mountpoint, args.options, args.foreground)
|
||||
except RuntimeError:
|
||||
# Relevant error message already printed to stderr by fuse
|
||||
self.exit_code = EXIT_ERROR
|
||||
with cache_if_remote(repository) as cached_repo:
|
||||
manifest, key = Manifest.load(repository)
|
||||
if args.location.archive:
|
||||
archive = Archive(repository, key, manifest, args.location.archive)
|
||||
else:
|
||||
archive = None
|
||||
operations = FuseOperations(key, repository, manifest, archive, cached_repo)
|
||||
logger.info("Mounting filesystem")
|
||||
try:
|
||||
operations.mount(args.mountpoint, args.options, args.foreground)
|
||||
except RuntimeError:
|
||||
# Relevant error message already printed to stderr by fuse
|
||||
self.exit_code = EXIT_ERROR
|
||||
finally:
|
||||
repository.close()
|
||||
return self.exit_code
|
||||
|
|
|
@ -8,7 +8,6 @@ import tempfile
|
|||
import time
|
||||
from .archive import Archive
|
||||
from .helpers import daemonize
|
||||
from .remote import cache_if_remote
|
||||
|
||||
import msgpack
|
||||
|
||||
|
@ -34,11 +33,11 @@ class ItemCache:
|
|||
class FuseOperations(llfuse.Operations):
|
||||
"""Export archive as a fuse filesystem
|
||||
"""
|
||||
def __init__(self, key, repository, manifest, archive):
|
||||
def __init__(self, key, repository, manifest, archive, cached_repo):
|
||||
super().__init__()
|
||||
self._inode_count = 0
|
||||
self.key = key
|
||||
self.repository = cache_if_remote(repository)
|
||||
self.repository = cached_repo
|
||||
self.items = {}
|
||||
self.parent = {}
|
||||
self.contents = defaultdict(dict)
|
||||
|
@ -238,4 +237,3 @@ class FuseOperations(llfuse.Operations):
|
|||
llfuse.main(single=True)
|
||||
finally:
|
||||
llfuse.close()
|
||||
self.repository.close()
|
||||
|
|
Loading…
Reference in New Issue