4.1.1 Basic Content Distribution

Suppose that machine A creates two files, a and b, under the replicated folder root. DFS-R updates the database accordingly. In particular, the global version of A is incremented and this gvsn value is assigned to the newly created resource. During the next communication, session machine A realizes by comparing version chain vectors that something happened on A that B does not know. Consequently, A sends all the updates that correspond to unknown gvsn values. Thus, the file creation (edition, renaming, or deletion) operation is propagated to B.

In more detail, when the local updates are processed by FRS, A's database will look like the following figure.

Database contents of machine A

Figure 10: Database contents of machine A

The mapping {R 0} is implicit in the version chain vector. In general, version chain vectors map to 0 on machines that are not part of the provided domain. When A joins with B, it sends {A 2} to B.

Sending the version vector to machine B

Figure 11: Sending the version vector to machine B

Based on this information, B computes the set difference between its version chain vector, which is empty, and the version chain vector {A 2} received from A. The set difference is {A 2}. B then requests updates that come from the set difference. Responding to the update request, A sends the two records for a and b to B. B determines that it needs to asks A to also send the contents of the files a and b to it. After receiving the content, it can insert those files into its local version of the share and update its database.

Database contents of machine B after file replication

Figure 12: Database contents of machine B after file replication