blob: cb488eeb635372e09ecb2db906c0cdafc1551158 [file] [log] [blame]
Pantelis Antoniou201c9102014-07-04 19:58:49 +03001A DT changeset is a method which allows one to apply changes
2in the live tree in such a way that either the full set of changes
3will be applied, or none of them will be. If an error occurs partway
4through applying the changeset, then the tree will be rolled back to the
5previous state. A changeset can also be removed after it has been
6applied.
7
8When a changeset is applied, all of the changes get applied to the tree
9at once before emitting OF_RECONFIG notifiers. This is so that the
10receiver sees a complete and consistent state of the tree when it
11receives the notifier.
12
13The sequence of a changeset is as follows.
14
151. of_changeset_init() - initializes a changeset
16
172. A number of DT tree change calls, of_changeset_attach_node(),
18of_changeset_detach_node(), of_changeset_add_property(),
19of_changeset_remove_property, of_changeset_update_property() to prepare
20a set of changes. No changes to the active tree are made at this point.
21All the change operations are recorded in the of_changeset 'entries'
22list.
23
Wolfram Sang63b77d62016-08-24 15:38:56 +0200243. of_changeset_apply() - Apply the changes to the tree. Either the
Pantelis Antoniou201c9102014-07-04 19:58:49 +030025entire changeset will get applied, or if there is an error the tree will
Wolfram Sang63b77d62016-08-24 15:38:56 +020026be restored to the previous state. The core ensures proper serialization
27through locking. An unlocked version __of_changeset_apply is available,
28if needed.
Pantelis Antoniou201c9102014-07-04 19:58:49 +030029
30If a successfully applied changeset needs to be removed, it can be done
Wolfram Sang63b77d62016-08-24 15:38:56 +020031with of_changeset_revert().