diff options
author | Joerg Steffens <joerg.steffens@bareos.com> | 2015-10-30 19:06:21 +0300 |
---|---|---|
committer | Joerg Steffens <joerg.steffens@bareos.com> | 2015-10-30 19:06:21 +0300 |
commit | ccc5b9aa57316c7edd4e593fce90949855229401 (patch) | |
tree | 81de1661c91743b0c8dbc515a2c0adf4d99b4f9c | |
parent | 2862ab10ff2b65d9c521c9b4f0969ac82b9316ca (diff) |
optimize caching
-rw-r--r-- | bareos/fuse/node/base.py | 4 | ||||
-rw-r--r-- | bareos/fuse/node/directory.py | 2 | ||||
-rw-r--r-- | bareos/fuse/node/job.py | 3 | ||||
-rw-r--r-- | bareos/fuse/node/jobsname.py | 4 | ||||
-rw-r--r-- | bareos/fuse/node/volume.py | 3 |
5 files changed, 16 insertions, 0 deletions
diff --git a/bareos/fuse/node/base.py b/bareos/fuse/node/base.py index 012da3f..916e2b0 100644 --- a/bareos/fuse/node/base.py +++ b/bareos/fuse/node/base.py @@ -186,6 +186,8 @@ class Base(object): self.update_stat() result = self.get_stat() else: + if not (path.get(0) in self.subnodes): + self.update() if path.get(0) in self.subnodes: topdir = path.shift() result = self.subnodes[topdir].getattr(path) @@ -201,6 +203,8 @@ class Base(object): if self.content != None: result = self.content[offset:offset+size] else: + if not (path.get(0) in self.subnodes): + self.update() if path.get(0) in self.subnodes: topdir = path.shift() result = self.subnodes[topdir].read(path, size, offset) diff --git a/bareos/fuse/node/directory.py b/bareos/fuse/node/directory.py index 611933e..e54915d 100644 --- a/bareos/fuse/node/directory.py +++ b/bareos/fuse/node/directory.py @@ -26,6 +26,8 @@ class Directory(Base): self.update() result = list(self.defaultdirs) + list(self.subnodes.keys()) else: + if not (path.get(0) in self.subnodes): + self.update() if path.get(0) in self.subnodes: topdir = path.shift() result = self.subnodes[topdir].readdir(path, offset) diff --git a/bareos/fuse/node/job.py b/bareos/fuse/node/job.py index c6c3213..7db12e5 100644 --- a/bareos/fuse/node/job.py +++ b/bareos/fuse/node/job.py @@ -45,6 +45,9 @@ class Job(Directory): name = "jobid={jobid}_level={level}_status={jobstatus}".format(**job) return name + def do_update_stat(self): + self.subnode_count = 3 + def do_update(self): self.add_subnode(File, name="info.txt", content = pformat(self.job) + "\n") self.add_subnode(JobLog, name="job.log", job=self.job) diff --git a/bareos/fuse/node/jobsname.py b/bareos/fuse/node/jobsname.py index de97ace..bba0c20 100644 --- a/bareos/fuse/node/jobsname.py +++ b/bareos/fuse/node/jobsname.py @@ -14,6 +14,10 @@ class JobsName(Directory): def get_id(cls, name): return name + def do_update_stat(self): + data = self.bsock.call("llist job=%s count" % (self.jobname)) + self.subnode_count = int(data['jobs'][0]['count']) + def do_update(self): data = self.bsock.call("llist job=%s" % (self.jobname)) jobs = data['jobs'] diff --git a/bareos/fuse/node/volume.py b/bareos/fuse/node/volume.py index 301669b..e57215f 100644 --- a/bareos/fuse/node/volume.py +++ b/bareos/fuse/node/volume.py @@ -17,6 +17,9 @@ class Volume(Directory): def get_id(cls, name, volume): return volume['volumename'] + def do_update_stat(self): + self.subnode_count = 3 + def do_update(self): self.add_subnode(File, name="info.txt", content=pformat(self.volume) + "\n") self.add_subnode(JobsList, name="jobs", selector="volume=%s" % (self.name)) |