diff --git a/Types/StandardGroups.hs b/Types/StandardGroups.hs index 32e2cb3af2..aeae200c2e 100644 --- a/Types/StandardGroups.hs +++ b/Types/StandardGroups.hs @@ -32,6 +32,6 @@ descStandardGroup BackupGroup = "backup: collects all files" {- See doc/preferred_content.mdwn for explanations of these expressions. -} preferredContent :: StandardGroup -> String preferredContent ClientGroup = "exclude=*/archive/*" -preferredContent TransferGroup = "not inallgroup=client and " ++ preferredContent ClientGroup +preferredContent TransferGroup = "not (inallgroup=client or not copies=client:2) and " ++ preferredContent ClientGroup preferredContent ArchiveGroup = "not copies=archive:1" preferredContent BackupGroup = "" -- all content is preferred diff --git a/doc/preferred_content.mdwn b/doc/preferred_content.mdwn index c130a07e61..6205eb4c98 100644 --- a/doc/preferred_content.mdwn +++ b/doc/preferred_content.mdwn @@ -61,7 +61,13 @@ USB drive used in a sneakernet. The preferred content expression for these causes them to get and retain data until all clients have a copy. -`not inallgroup=client and exclude=*/archive/*` +`not (inallgroup=client or not copies=client:2) and exclude=*/archive/*` + +The "not copies=client:2" part of the above handles the case where +there is only one client repository. It makes a transfer repository +speculatively prefer content in this case, even though it as of yet +has nowhere to transfer it to. Presumably, another client repository +will be added later. ### archive