diff --git a/src/borg/archiver.py b/src/borg/archiver.py index b720d4745..8eb8bb28b 100644 --- a/src/borg/archiver.py +++ b/src/borg/archiver.py @@ -1744,21 +1744,24 @@ class Archiver: def repo_validate(section, name, value=None, check_value=True): if section not in ['repository', ]: raise ValueError('Invalid section') - if name in ['segments_per_dir', 'max_segment_size', 'storage_quota', 'last_segment_checked', ]: + if name in ['segments_per_dir', 'last_segment_checked', ]: if check_value: try: int(value) except ValueError: raise ValueError('Invalid value') from None - if name == 'max_segment_size': - if int(value) >= MAX_SEGMENT_SIZE_LIMIT: - raise ValueError('Invalid value: max_segment_size >= %d' % MAX_SEGMENT_SIZE_LIMIT) - elif name in ['additional_free_space', ]: + elif name in ['max_segment_size', 'additional_free_space', 'storage_quota', ]: if check_value: try: parse_file_size(value) except ValueError: raise ValueError('Invalid value') from None + if name == 'storage_quota': + if parse_file_size(value) < parse_file_size('10M'): + raise ValueError('Invalid value: storage_quota < 10M') + elif name == 'max_segment_size': + if parse_file_size(value) >= MAX_SEGMENT_SIZE_LIMIT: + raise ValueError('Invalid value: max_segment_size >= %d' % MAX_SEGMENT_SIZE_LIMIT) elif name in ['append_only', ]: if check_value and value not in ['0', '1']: raise ValueError('Invalid value') diff --git a/src/borg/repository.py b/src/borg/repository.py index 8db86ea81..c0926b58a 100644 --- a/src/borg/repository.py +++ b/src/borg/repository.py @@ -432,7 +432,7 @@ class Repository: if 'repository' not in self.config.sections() or self.config.getint('repository', 'version') != 1: self.close() raise self.InvalidRepository(path) - self.max_segment_size = self.config.getint('repository', 'max_segment_size') + self.max_segment_size = parse_file_size(self.config.get('repository', 'max_segment_size')) if self.max_segment_size >= MAX_SEGMENT_SIZE_LIMIT: self.close() raise self.InvalidRepositoryConfig(path, 'max_segment_size >= %d' % MAX_SEGMENT_SIZE_LIMIT) # issue 3592 @@ -443,7 +443,7 @@ class Repository: self.append_only = self.append_only or self.config.getboolean('repository', 'append_only', fallback=False) if self.storage_quota is None: # self.storage_quota is None => no explicit storage_quota was specified, use repository setting. - self.storage_quota = self.config.getint('repository', 'storage_quota', fallback=0) + self.storage_quota = parse_file_size(self.config.get('repository', 'storage_quota', fallback=0)) self.id = unhexlify(self.config.get('repository', 'id').strip()) self.io = LoggedIO(self.path, self.max_segment_size, self.segments_per_dir) if self.check_segment_magic: