summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2012-11-17 18:33:39 +0000
committerLars Wirzenius <liw@liw.fi>2012-11-17 18:33:39 +0000
commit3f7848d192d5c1d0167471b3c7a562758fb95a73 (patch)
treec64201d0414e3a41ce987542039bc086065dba08
parentc730d554a92cdf9e313006cff3fd227023fb848f (diff)
downloadobnam-3f7848d192d5c1d0167471b3c7a562758fb95a73.tar.gz
Add fsck --fsck-ignore-chunks setting
This is useful to allow checking integrity of a repository without having to check all chunks, which is quite time consuming. I am going to be using this to find out why there are missing nodes in one of my repositories.
-rw-r--r--obnamlib/plugins/fsck_plugin.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/obnamlib/plugins/fsck_plugin.py b/obnamlib/plugins/fsck_plugin.py
index 123cbf0e..28c88713 100644
--- a/obnamlib/plugins/fsck_plugin.py
+++ b/obnamlib/plugins/fsck_plugin.py
@@ -91,7 +91,7 @@ class CheckFile(WorkItem):
if self.repo.current_client != self.client_name:
self.repo.open_client(self.client_name)
metadata = self.repo.get_metadata(self.genid, self.filename)
- if metadata.isfile():
+ if metadata.isfile() and not self.settings['fsck-ignore-chunks']:
chunkids = self.repo.get_file_chunks(self.genid, self.filename)
checksummer = self.repo.new_checksummer()
for chunkid in chunkids:
@@ -269,6 +269,10 @@ class FsckPlugin(obnamlib.ObnamPlugin):
self.app.add_subcommand('fsck', self.fsck)
self.app.settings.boolean(['fsck-fix'],
'should fsck try to fix problems?')
+ self.app.settings.boolean(
+ ['fsck-ignore-chunks'],
+ 'ignore chunks when checking repository integrity (assume all '
+ 'chunks exist and are correct)')
def configure_ttystatus(self):
self.app.ts.clear()
@@ -295,7 +299,10 @@ class FsckPlugin(obnamlib.ObnamPlugin):
self.chunkids_seen = set()
self.work_items = []
self.add_item(CheckRepository())
- final_items = [CheckForExtraChunks()]
+
+ final_items = []
+ if not self.app.settings['fsck-ignore-chunks']:
+ final_items.append(CheckForExtraChunks())
self.configure_ttystatus()
i = 0