summaryrefslogtreecommitdiff
path: root/net/syncffsd/DESCR
diff options
context:
space:
mode:
Diffstat (limited to 'net/syncffsd/DESCR')
-rw-r--r--net/syncffsd/DESCR16
1 files changed, 16 insertions, 0 deletions
diff --git a/net/syncffsd/DESCR b/net/syncffsd/DESCR
new file mode 100644
index 00000000000..140a70ede1e
--- /dev/null
+++ b/net/syncffsd/DESCR
@@ -0,0 +1,16 @@
+syncffsd uses rsync(1) to replicate a directory tree to another host.
+This involves detecting changes, something NetBSD is not well prepared to
+handle. The kqueue(2) interface can detect changes, but it needs to use a
+file descriptor for every node monitored, and this does not scales very
+well for huge directories trees.
+
+syncffsd attempts to improve the situation until kqueue(2) gets better,
+by using FFS superblock's fs_time field, which is updated on every
+filesystem change. This lets syncffsd detects a change immediatly if the
+filesystem is mounted synchronous, or after a few seconds if mounted with
+WAPBL(4) enabled.
+
+Once a change is detected, the relevant nodes are found by walking source
+looking for files that changed since the previous filesystem modification.
+The resulting nodes are deduped (i.e.: we do not retain a node in
+a directory if the directory itself changed), and are fed to rsync(1).