Add a setting for fsck to check connectivity only

The object checks may take a long time and sometimes we are only
interested in connectivity check.

This is similar to 'git fsck --connectivity-only'.

Change-Id: I654e8fdccdb16d796f920088429d188cc96734bc
Signed-off-by: Zhen Chen <czhen@google.com>
This commit is contained in:
Zhen Chen 2017-11-10 16:05:28 -08:00
parent b88204edfb
commit c93c653ccf
1 changed files with 14 additions and 1 deletions

View File

@ -69,6 +69,7 @@ public class DfsFsck {
private final DfsRepository repo;
private final DfsObjDatabase objdb;
private ObjectChecker objChecker = new ObjectChecker();
private boolean connectivityOnly;
/**
* Initialize DFS fsck.
@ -97,7 +98,9 @@ public FsckError check(ProgressMonitor pm) throws IOException {
}
FsckError errors = new FsckError();
checkPacks(pm, errors);
if (!connectivityOnly) {
checkPacks(pm, errors);
}
checkConnectivity(pm, errors);
return errors;
}
@ -174,4 +177,14 @@ private void checkConnectivity(ProgressMonitor pm, FsckError errors)
public void setObjectChecker(ObjectChecker objChecker) {
this.objChecker = objChecker;
}
/**
* @param connectivityOnly
* whether fsck should bypass object validity and integrity
* checks and only check connectivity. The default is
* {@code false}, meaning to run all checks.
*/
public void setConnectivityOnly(boolean connectivityOnly) {
this.connectivityOnly = connectivityOnly;
}
}