syncthing/proto/lib/config/folderconfiguration.proto
tomasz1986 358cf25cff
lib/config: Allow sub-second watcher delay (fixes #7859) (#7864)
Allow the watcher delay to take fractional values, effectively allowing
for much shorter delays. The minimum value is limited at 0.01, which
effectively translates to 10ms. This is required in order to guarantee
that there is still enough time to aggregate multiple single change
events.

Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com>
2023-03-18 08:50:38 +01:00

86 lines
5.5 KiB
Protocol Buffer

syntax = "proto3";
package config;
import "lib/config/foldertype.proto";
import "lib/config/size.proto";
import "lib/config/pullorder.proto";
import "lib/config/versioningconfiguration.proto";
import "lib/config/blockpullorder.proto";
import "lib/fs/types.proto";
import "lib/fs/copyrangemethod.proto";
import "ext.proto";
message FolderDeviceConfiguration {
bytes device_id = 1 [(ext.goname) = "DeviceID", (ext.xml) = "id,attr", (ext.json) = "deviceID", (ext.device_id) = true];
bytes introduced_by = 2 [(ext.xml) = "introducedBy,attr", (ext.device_id) = true];
string encryption_password = 3;
}
message FolderConfiguration {
string id = 1 [(ext.goname) = "ID", (ext.xml) = "id,attr", (ext.nodefault) = true];
string label = 2 [(ext.xml) = "label,attr", (ext.restart) = false];
fs.FilesystemType filesystem_type = 3;
string path = 4 [(ext.xml) = "path,attr", (ext.default) = "~"];
FolderType type = 5 [(ext.xml) = "type,attr"];
repeated FolderDeviceConfiguration devices = 6;
int32 rescan_interval_s = 7 [(ext.xml) = "rescanIntervalS,attr", (ext.default) = "3600"];
bool fs_watcher_enabled = 8 [(ext.goname) = "FSWatcherEnabled", (ext.xml) = "fsWatcherEnabled,attr", (ext.default) = "true"];
double fs_watcher_delay_s = 9 [(ext.goname) = "FSWatcherDelayS", (ext.xml) = "fsWatcherDelayS,attr", (ext.default) = "10"];
bool ignore_perms = 10 [(ext.xml) = "ignorePerms,attr"];
bool auto_normalize = 11 [(ext.xml) = "autoNormalize,attr", (ext.default) = "true"];
Size min_disk_free = 12 [(ext.default) = "1 %"];
VersioningConfiguration versioning = 13;
int32 copiers = 14;
int32 puller_max_pending_kib = 15 [(ext.goname) = "PullerMaxPendingKiB", (ext.xml) = "pullerMaxPendingKiB", (ext.json) = "pullerMaxPendingKiB"];
int32 hashers = 16;
PullOrder order = 17;
bool ignore_delete = 18;
int32 scan_progress_interval_s = 19;
int32 puller_pause_s = 20;
int32 max_conflicts = 21 [(ext.default) = "10"];
bool disable_sparse_files = 22;
bool disable_temp_indexes = 23;
bool paused = 24;
int32 weak_hash_threshold_pct = 25;
string marker_name = 26;
bool copy_ownership_from_parent = 27;
int32 mod_time_window_s = 28 [(ext.goname) = "RawModTimeWindowS"];
int32 max_concurrent_writes = 29 [(ext.default) = "2"];
bool disable_fsync = 30;
BlockPullOrder block_pull_order = 31;
fs.CopyRangeMethod copy_range_method = 32 [(ext.default) = "standard"];
bool case_sensitive_fs = 33 [(ext.goname) = "CaseSensitiveFS", (ext.xml) = "caseSensitiveFS", (ext.json) = "caseSensitiveFS"];
bool follow_junctions = 34 [(ext.goname) = "JunctionsAsDirs", (ext.xml) = "junctionsAsDirs", (ext.json) = "junctionsAsDirs"];
bool sync_ownership = 35;
bool send_ownership = 36;
bool sync_xattrs = 37;
bool send_xattrs = 38;
XattrFilter xattr_filter = 39;
// Legacy deprecated
bool read_only = 9000 [deprecated=true, (ext.xml) = "ro,attr,omitempty"];
double min_disk_free_pct = 9001 [deprecated=true];
int32 pullers = 9002 [deprecated=true];
bool scan_ownership = 9003 [deprecated=true];
}
// Extended attribute filter. This is a list of patterns to match (glob
// style), each with an action (permit or deny). First match is used. If the
// filter is empty, all strings are permitted. If the filter is non-empty,
// the default action becomes deny. To counter this, you can use the "*"
// pattern to match all strings at the end of the filter. There are also
// limits on the size of accepted attributes.
message XattrFilter {
repeated XattrFilterEntry entries = 1 [(ext.xml) = "entry"];
int32 max_single_entry_size = 2 [(ext.xml) = "maxSingleEntrySize", (ext.default) = "1024"];
int32 max_total_size = 3 [(ext.xml) = "maxTotalSize", (ext.default) = "4096"];
}
message XattrFilterEntry {
string match = 1 [(ext.xml) = "match,attr"];
bool permit = 2 [(ext.xml) = "permit,attr"];
}