1A 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 243. mutex_lock(of_mutex) - starts a changeset; The global of_mutex 25ensures there can only be one editor at a time. 26 274. of_changeset_apply() - Apply the changes to the tree. Either the 28entire changeset will get applied, or if there is an error the tree will 29be restored to the previous state 30 315. mutex_unlock(of_mutex) - All operations complete, release the mutex 32 33If a successfully applied changeset needs to be removed, it can be done 34with the following sequence. 35 361. mutex_lock(of_mutex) 37 382. of_changeset_revert() 39 403. mutex_unlock(of_mutex) 41