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 .cache import Cache
|
||||||
from .key import key_creator
|
from .key import key_creator
|
||||||
from .archive import Archive, ArchiveChecker, CHUNKER_PARAMS
|
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')
|
has_lchflags = hasattr(os, 'lchflags')
|
||||||
|
|
||||||
|
@ -380,12 +380,13 @@ class Archiver:
|
||||||
|
|
||||||
repository = self.open_repository(args)
|
repository = self.open_repository(args)
|
||||||
try:
|
try:
|
||||||
|
with cache_if_remote(repository) as cached_repo:
|
||||||
manifest, key = Manifest.load(repository)
|
manifest, key = Manifest.load(repository)
|
||||||
if args.location.archive:
|
if args.location.archive:
|
||||||
archive = Archive(repository, key, manifest, args.location.archive)
|
archive = Archive(repository, key, manifest, args.location.archive)
|
||||||
else:
|
else:
|
||||||
archive = None
|
archive = None
|
||||||
operations = FuseOperations(key, repository, manifest, archive)
|
operations = FuseOperations(key, repository, manifest, archive, cached_repo)
|
||||||
logger.info("Mounting filesystem")
|
logger.info("Mounting filesystem")
|
||||||
try:
|
try:
|
||||||
operations.mount(args.mountpoint, args.options, args.foreground)
|
operations.mount(args.mountpoint, args.options, args.foreground)
|
||||||
|
|
|
@ -8,7 +8,6 @@ import tempfile
|
||||||
import time
|
import time
|
||||||
from .archive import Archive
|
from .archive import Archive
|
||||||
from .helpers import daemonize
|
from .helpers import daemonize
|
||||||
from .remote import cache_if_remote
|
|
||||||
|
|
||||||
import msgpack
|
import msgpack
|
||||||
|
|
||||||
|
@ -34,11 +33,11 @@ class ItemCache:
|
||||||
class FuseOperations(llfuse.Operations):
|
class FuseOperations(llfuse.Operations):
|
||||||
"""Export archive as a fuse filesystem
|
"""Export archive as a fuse filesystem
|
||||||
"""
|
"""
|
||||||
def __init__(self, key, repository, manifest, archive):
|
def __init__(self, key, repository, manifest, archive, cached_repo):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._inode_count = 0
|
self._inode_count = 0
|
||||||
self.key = key
|
self.key = key
|
||||||
self.repository = cache_if_remote(repository)
|
self.repository = cached_repo
|
||||||
self.items = {}
|
self.items = {}
|
||||||
self.parent = {}
|
self.parent = {}
|
||||||
self.contents = defaultdict(dict)
|
self.contents = defaultdict(dict)
|
||||||
|
@ -238,4 +237,3 @@ class FuseOperations(llfuse.Operations):
|
||||||
llfuse.main(single=True)
|
llfuse.main(single=True)
|
||||||
finally:
|
finally:
|
||||||
llfuse.close()
|
llfuse.close()
|
||||||
self.repository.close()
|
|
||||||
|
|
Loading…
Reference in New Issue