Old behavior: tagging ID with DEG_TAG_COPY_ON_WRITE will do copy-on-write (as requested), but will also flush changes to all operations with depends on it. This means, for example, tagging object for copy-on-write will force its modifier stack to be evaluated. This was needed in the earlier days of copy-on-write when things were not well defined and when lots of areas were not doing proper tagging. New behavior: tagging ID with DEG_TAG_COPY_ON_WRITE will only ensure copy of the dadatblock is up to date, without flushing updates to any dependencies. This means following things: - We can update parts of ID without invoking heavy computation of other parts of same ID. For example, tagging object for COPY_ON_WRITE update on mode change will not force modifiers stack to update. - If some dependent datablock is dependent on pointers which are invalidated by copy-on-write (like, evaluated mesh referencing custom data layers from original mesh), this will either require explicit tag or explicit relation in the dependency graph. Currently can not find a faulty case since tagging of mesh happens with either 0 (which means, everything) or with GEOMETRY, which also forces all dependent modifier stacks to be re-evaluated. This fixes missing PBVH when going into sculpt mode (sculpt mode toggle was tagging object for COPY_ON_WRITE update, which was forcing modifier stack to be updated, which was freeing PBVH. Some other operations might also become faster with this change.